java - Glassfish: Invalid resource -
i have ejb module , want deploy on glassfish. configured jdbc pool , resource , ping successful. have error when deploy module. java db call "bank", glassfih write "bank_pm".
persistence.xml
<?xml version="1.0" encoding="utf-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="clientmanager" transaction-type="jta"> <jta-data-source>jdbc:derby://localhost:1527/bank</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="javax.persistence.schema-generation.database.action" value="create"/> </properties> </persistence-unit> </persistence> enter code here
glassfish-resources.xml
<?xml version="1.0" encoding="utf-8"?> <!doctype resources public "-//glassfish.org//dtd glassfish application server 3.1 resource definitions//en" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd"> <resources> <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="org.apache.derby.jdbc.clientdatasource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="connectionpool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.datasource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false"> <property name="url" value="jdbc:derby://localhost:1527/bank"/> <property name="servername" value="localhost"/> <property name="portnumber" value="1527"/> <property name="databasename" value="bank"/> <property name="user" value="bank"/> <property name="password" value="1234"/> </jdbc-connection-pool> </resources>
glassfish log
severe: exception while preparing app : invalid resource : jdbc:derby://localhost:1527/bank__pm com.sun.appserv.connectors.internal.api.connectorruntimeexception: invalid resource : jdbc:derby://localhost:1527/bank__pm @ org.glassfish.jdbcruntime.service.jdbcdatasource.validateresource(jdbcdatasource.java:81) @ org.glassfish.jdbcruntime.service.jdbcdatasource.setresourceinfo(jdbcdatasource.java:62) @ org.glassfish.jdbcruntime.jdbcruntimeextension.lookupdatasourceindas(jdbcruntimeextension.java:136) @ com.sun.enterprise.connectors.connectorruntime.lookupdatasourceindas(connectorruntime.java:589) @ com.sun.enterprise.connectors.connectorruntime.lookuppmresource(connectorruntime.java:517) @ org.glassfish.persistence.common.persistencehelper.lookuppmresource(persistencehelper.java:63) @ org.glassfish.persistence.jpa.providercontainercontractinfobase.lookupdatasource(providercontainercontractinfobase.java:71) @ org.glassfish.persistence.jpa.persistenceunitinfoimpl.<init>(persistenceunitinfoimpl.java:108) @ org.glassfish.persistence.jpa.persistenceunitloader.loadpu(persistenceunitloader.java:142) @ org.glassfish.persistence.jpa.persistenceunitloader.<init>(persistenceunitloader.java:107) @ org.glassfish.persistence.jpa.jpadeployer$1.visitpud(jpadeployer.java:223) @ org.glassfish.persistence.jpa.jpadeployer$persistenceunitdescriptoriterator.iteratepuds(jpadeployer.java:510) @ org.glassfish.persistence.jpa.jpadeployer.createemfs(jpadeployer.java:230) @ org.glassfish.persistence.jpa.jpadeployer.prepare(jpadeployer.java:168) @ com.sun.enterprise.v3.server.applicationlifecycle.preparemodule(applicationlifecycle.java:922) @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:431) @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:219) @ org.glassfish.deployment.admin.deploycommand.execute(deploycommand.java:491) @ com.sun.enterprise.v3.admin.commandrunnerimpl$2$1.run(commandrunnerimpl.java:527) @ com.sun.enterprise.v3.admin.commandrunnerimpl$2$1.run(commandrunnerimpl.java:523) @ java.security.accesscontroller.doprivileged(native method) @ javax.security.auth.subject.doas(subject.java:360) @ com.sun.enterprise.v3.admin.commandrunnerimpl$2.execute(commandrunnerimpl.java:522) @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:546) @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:1423) @ com.sun.enterprise.v3.admin.commandrunnerimpl.access$1500(commandrunnerimpl.java:108) @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1762) @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1674) @ com.sun.enterprise.v3.admin.adminadapter.docommand(adminadapter.java:534) @ com.sun.enterprise.v3.admin.adminadapter.onmissingresource(adminadapter.java:224) @ org.glassfish.grizzly.http.server.statichttphandler.service(statichttphandler.java:297) @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:246) @ org.glassfish.grizzly.http.server.httphandler.runservice(httphandler.java:191) @ org.glassfish.grizzly.http.server.httphandler.dohandle(httphandler.java:168) @ org.glassfish.grizzly.http.server.httpserverfilter.handleread(httpserverfilter.java:189) @ org.glassfish.grizzly.filterchain.executorresolver$9.execute(executorresolver.java:119) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executefilter(defaultfilterchain.java:288) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executechainpart(defaultfilterchain.java:206) @ org.glassfish.grizzly.filterchain.defaultfilterchain.execute(defaultfilterchain.java:136) @ org.glassfish.grizzly.filterchain.defaultfilterchain.process(defaultfilterchain.java:114) @ org.glassfish.grizzly.processorexecutor.execute(processorexecutor.java:77) @ org.glassfish.grizzly.nio.transport.tcpniotransport.fireioevent(tcpniotransport.java:838) @ org.glassfish.grizzly.strategies.abstractiostrategy.fireioevent(abstractiostrategy.java:113) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.run0(workerthreadiostrategy.java:115) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.access$100(workerthreadiostrategy.java:55) @ org.glassfish.grizzly.strategies.workerthreadiostrategy$workerthreadrunnable.run(workerthreadiostrategy.java:135) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.dowork(abstractthreadpool.java:564) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.run(abstractthreadpool.java:544) @ java.lang.thread.run(thread.java:745)
the issue providing connection url in < jta-data-source > not correct.
here should specify jndi name not connection string, proper way of setting connection url under < properties > tag.
in below solution added name
attribute in glassfish-resources.xml
under resource
tag.
and referred created resource name in persistence.xml
under tag
change glassfish-resources.xml below
<?xml version="1.0" encoding="utf-8"?> <!doctype resources public "-//glassfish.org//dtd glassfish application server 3.1 resource definitions//en" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd"> <resources> <jdbc-connection-pool name="jdbc/bank" allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="org.apache.derby.jdbc.clientdatasource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="connectionpool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.datasource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false"> <property name="url" value="jdbc:derby://localhost:1527/bank"/> <property name="servername" value="localhost"/> <property name="portnumber" value="1527"/> <property name="databasename" value="bank"/> <property name="user" value="bank"/> <property name="password" value="1234"/> </jdbc-connection-pool> </resources>
and change persistence.xml below
<?xml version="1.0" encoding="utf-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="clientmanager" transaction-type="jta"> <jta-data-source>jdbc/bank</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="javax.persistence.schema-generation.database.action" value="create"/> </properties> </persistence-unit> </persistence>
Comments
Post a Comment