You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by David Jencks <da...@yahoo.com> on 2010/07/16 08:28:24 UTC

Re: Geronimo 2.2 + Spring + Hibernate and a Geronimo managed DB Pool with XA driver

On Jul 15, 2010, at 9:17 PM, Ivan wrote:

> I think that you might need to define the resource reference in your ejb deployment plan, or server will not map the resource to the bean scope naming context. Or you could directly lookup it by the global naming if the portable application is not your concern.

There are several pieces in this picture that you don't indicate how they relate.  If you have code like:

new InitialContext().lookup("java:comp/env/foo")

in a javaee component such as ejb, servlet, or app client, then you have to indicate that geronimo should put something in the jndi context for that component: the ejb-jar.xml, web.xml, application-client.xml, or use a class-level @Resource annotation.  You can also use an @Resource annotation on a field and geronimo will do the lookup for you.

If you are looking up a datasource, then in the geronimo plan for your app you need to include a dependency on the deployed datasource module (in your example

           <dep:dependency>
           <dep:groupId>console.dbpool</dep:groupId>
           <dep:artifactId>jdbc_testmydb</dep:artifactId>
           <dep:version>1.0</dep:version>
           <dep:type>car</dep:type>
           </dep:dependency>

If the "jdbc/testmydb" part of the lookup matches the name element in the connector plan, then you don't need any other info.  If it doesn't, you also need a resource--ref in the geronimo plan to match up what you are looking up with what is defined.  I'd advise naming the datasource jdbc/testmydb so you don't need this mapping.

The jndi lookup will also work in any object reached in the same thread from a javaee component.  If you are trying to do this kind of lookup in a spring bean, and it is only called from a javaee comonent, and in the same thread, the lookup should work.

You can also directly look up the datasource in global jndi without any configuration using
new InitialContext().lookup("jca:/default/wakapeek-persist-ear/JCAManagedConnectionFactory/testmydb")

hope this helps
david jencks


> 
> 2010/7/16 Billy Vandory <bi...@yahoo.com>
> 
> I'm still having a problem with this.  I've determined it's not spring, it's
> most likely just a configuration issue.  The problem is trying to get a
> lookup to a global database pool in geronimo.  In an SL-EJB I have:
> 
> InitialContext ctx = new InitialContext();
> DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/testmydb");
> Connection con = ds.getConnection();
> 
> and my deployment plan for the db looks like (copied from geronimo's show
> plan button):
> 
> <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2">
>    <dep:environment
> xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2">
>        <dep:moduleId>
>            <dep:groupId>console.dbpool</dep:groupId>
>            <dep:artifactId>jdbc_testmydb</dep:artifactId>
>            <dep:version>1.0</dep:version>
>            <dep:type>car</dep:type>
>        </dep:moduleId>
>        <dep:dependencies>
>            <dep:dependency>
>                <dep:groupId>postgresql</dep:groupId>
>                <dep:artifactId>postgresql-8.2</dep:artifactId>
>                <dep:version>508.jdbc3</dep:version>
>                <dep:type>jar</dep:type>
>            </dep:dependency>
>        </dep:dependencies>
>    </dep:environment>
>    <resourceadapter>
>        <outbound-resourceadapter>
>            <connection-definition>
> 
> <connectionfactory-interface>javax.sql.DataSource</connectionfactory-interface>
>                <connectiondefinition-instance>
>                    <name>testmydb</name>
>                    <config-property-setting
> name="DatabaseName">walmart0192</config-property-setting>
>                    <config-property-setting
> name="Password"></config-property-setting>
>                    <config-property-setting
> name="UserName">itmgr</config-property-setting>
>                    <config-property-setting
> name="ServerName">192.168.0.10</config-property-setting>
>                    <config-property-setting name="PrepareThreshold"/>
>                    <connectionmanager>
>                        <local-transaction/>
>                        <single-pool>
>                            <max-size>10</max-size>
>                            <min-size>0</min-size>
>                            <match-one/>
>                        </single-pool>
>                    </connectionmanager>
>                </connectiondefinition-instance>
>            </connection-definition>
>        </outbound-resourceadapter>
>    </resourceadapter>
> </connector>
> 
> but i always get the exception:
> 
> 80041:  2010-07-15 21:30:06,442 ERROR [CategoryEJB]
> javax.naming.NotContextException: jdbc/testmydb
> 
> Note that I am not running a web app, just an EJB backend, so I am not
> configuring anything in web.xml.  is the configuration in web.xml required?
> I tried it and its the same result, but I would like to rule this out, that
> web.xml resource-ref config is not required if not running in a web app.
> 
> The JNDI name under geronimo's JNDI viewer is: (resource adapters)
> console.dbpool/testmydb/1.0/car
> 
> also shows:
> jca:/default/wakapeek-persist-ear/JCAManagedConnectionFactory/testmydb
> 
> In the geronimo deployment plan i have a connector defined:
> 
> <app:module>
>  <app:connector>tranql-connector-postgresql-local-1.2.rar</app:connector>
>  <app:alt-dd>testmydb.xml</app:alt-dd>
> </app:module>
> 
> Using dbpool in the geronimo console, i can query this database just fine.'
> 
> Any ideas?  Thanks alot.
> Billy
> 
> 
> 
> --
> View this message in context: http://apache-geronimo.328035.n3.nabble.com/Geronimo-2-2-Spring-Hibernate-and-a-Geronimo-managed-DB-Pool-with-XA-driver-tp874759p971182.html
> Sent from the Users mailing list archive at Nabble.com.
> 
> 
> 
> -- 
> Ivan


Re: Geronimo 2.2 + Spring + Hibernate and a Geronimo managed DB Pool with XA driver

Posted by Billy Vandory <bi...@yahoo.com>.
Hi David, thanks very much for that detailed reply.  Yes, I have a dependency
configured in openejb-jar.xml.  I also tried the lookup using the jca: but
it still fails.  

the db is deployed:
jdbc/testmydb  	 default/wakapeek-persist-ear/1.0/ear  	running  	 Edit 
Usage  Delete


this is in openejb-jar which reflects the module name 

[openejb-jar]
<dep:dependency>
            	<dep:groupId>console.dbpool</dep:groupId>
            	<dep:artifactId>jdbc_testmydb</dep:artifactId>
            	<dep:version>1.0</dep:version>
            	<dep:type>car</dep:type>
        	</dep:dependency>   

in the geronimo-application.xml for the ear file i have

<app:module>
		<app:connector>tranql-connector-postgresql-local-1.2.rar</app:connector>
		<app:alt-dd>testmydb.xml</app:alt-dd>
	</app:module>

the testmydb.xml configures the connector, as in my previous post, but
here's the module config from the file:

 <dep:moduleId>
            <dep:groupId>console.dbpool</dep:groupId>
            <dep:artifactId>jdbc_testmydb</dep:artifactId>
            <dep:version>1.0</dep:version>
            <dep:type>car</dep:type>
        </dep:moduleId>

in application.xml for the ear file i have

  <module>
    <ejb>wakapeek-persist-ejb.jar</ejb>
  </module>
  <module>
    <connector>tranql-connector-postgresql-local-1.2.rar</connector>
  </module>

- my ejb project references the tranql connector

- i can have a @PersistenceContext inject the PU in my EJB and it works with
the entity manager

but i still can't do a lookup

here's my lookup now:

try {
	        InitialContext ctx = new InitialContext();
	        DataSource ds = (DataSource)
ctx.lookup("jca:/default/wakapeek-persist-ear/JCAManagedConnectionFactory/testmydb");
	        Connection con = ds.getConnection();
		}
		catch (Exception e) {
			logger.error(e);
		}

using the above jca:/ i get the following:

ERROR [CategoryEJB] javax.naming.NameNotFoundException: testmydb

in geronimo console, jndi viewer->resource adapter module:
*  console.dbpool/jdbc_testmydb_14/1.0/car  

can you give me any other options?



-- 
View this message in context: http://apache-geronimo.328035.n3.nabble.com/Geronimo-2-2-Spring-Hibernate-and-a-Geronimo-managed-DB-Pool-with-XA-driver-tp874759p974234.html
Sent from the Users mailing list archive at Nabble.com.