geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aaron Mulder <ammul...@alumni.princeton.edu>
Subject Re: Application Scoped JDBC Connector for CMP
Date Sat, 18 Jun 2005 05:12:18 GMT
	What happens if you change the cmp-connection-factory in 
openejb-jar.xml to look like this:

    <cmp-connection-factory>
        <resource-link>MysqlDataSource</resource-link>
    </cmp-connection-factory>                        

Aaron                           

On Fri, 17 Jun 2005, Neal Sanche wrote:
> Hi All,
> 
> I'm currently having trouble with a CMP bean getting access to a MySql 
> database when the deployment plans for the JDBC Connector are 
> application scoped. Here's what I've done, can you see something wrong 
> with what I'm doing?
> 
> application.xml
> 
> <application
>        xmlns="http://java.sun.com/xml/ns/j2ee"
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
>        http://java.sun.com/xml/ns/j2ee/application_1_4.xsd"
>        version="1.4">
>     <module>
>         <ejb>phonebook-ejb.jar</ejb>
>     </module>
>     <module>
>         <web>
>             <web-uri>phonebook.war</web-uri>
>             <context-root>/phonebook</context-root>
>         </web>
>     </module>
>     <module>
>         <connector>tranql-connector-1.0-SNAPSHOT.rar</connector>
>     </module>
> </application>
> 
> geronimo-application.xml
> 
> <application
>        xmlns="http://geronimo.apache.org/xml/ns/j2ee/application"
>        configId="org/acme/PhoneBook">
>     <module>
>         <connector>tranql-connector-1.0-SNAPSHOT.rar</connector>
>         <alt-dd>mysql-plan.xml</alt-dd>
>     </module>
> </application>
> 
> mysql-plan.xml
> 
> <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector"
>     version="1.5" configId="MysqlDatabase" 
> parentId="org/apache/geronimo/Server">
>     <dependency>
>         <uri>mysql/jars/mysql-connector-java-3.1.8-bin.jar</uri>
>     </dependency>
>     <resourceadapter>
>         <outbound-resourceadapter>
>             <connection-definition>
>                 <connectionfactory-interface> javax.sql.DataSource 
> </connectionfactory-interface>
>                 <connectiondefinition-instance>
>                     <name>MysqlDataSource</name>
>                     <config-property-setting name="UserName"> geronimo 
> </config-property-setting>
>                     <config-property-setting name="Password"> geronimo 
> </config-property-setting>
>                     <config-property-setting name="Driver"> 
> com.mysql.jdbc.Driver </config-property-setting>
>                     <config-property-setting name="ConnectionURL"> 
> jdbc:mysql://localhost/geronimo </config-property-setting>
>                     <config-property-setting 
> name="CommitBeforeAutocommit"> false </config-property-setting>
>                     <config-property-setting 
> name="ExceptionSorterClass"> 
> org.tranql.connector.NoExceptionsAreFatalSorter </config-property-setting>
>                     <connectionmanager>
>                         <local-transaction/>
>                         <single-pool>
>                             <max-size>10</max-size>
>                             <min-size>0</min-size>
>                             <blocking-timeout-milliseconds> 5000 
> </blocking-timeout-milliseconds>
>                             <idle-timeout-minutes>30</idle-timeout-minutes>
>                             <match-one/>
>                         </single-pool>
>                     </connectionmanager>
>                     <global-jndi-name> jdbc/MysqlDatabase 
> </global-jndi-name>
>                 </connectiondefinition-instance>
>             </connection-definition>
>         </outbound-resourceadapter>
>     </resourceadapter>
> </connector>
> 
> openejb-jar.xml
> 
> <openejb-jar
>     xmlns="http://www.openejb.org/xml/ns/openejb-jar"
>     configId="org/acme/PhonebookEJB"
>     parentId="MysqlDatabase">
>     <cmp-connection-factory>
>         <application>org/acme/PhoneBook</application>
>         <module>MysqlDatabase</module>
>         <name>MysqlDataSource</name>
>     </cmp-connection-factory>
>     <enterprise-beans>
>         <entity>
>             <ejb-name>PhoneBookEntry</ejb-name>
>             <jndi-name>PhoneBookEntry</jndi-name>
>             
> <local-jndi-name>java:comp/env/ejb/PhoneBookEntryLocal</local-jndi-name>
>             <table-name>phone</table-name>
>             <cmp-field-mapping>
>                 <cmp-field-name>name</cmp-field-name>
>                 <table-column>name</table-column>
>             </cmp-field-mapping>
>             <cmp-field-mapping>
>                 <cmp-field-name>phoneNumber</cmp-field-name>
>                 <table-column>phone</table-column>
>             </cmp-field-mapping>
>             <resource-ref>
>                 <ref-name>jdbc/basic/entityDatabase</ref-name>
>                 <application>null</application>
>                 <module>MysqlDatabase</module>
>                 <name>PhonebookDBPool</name>
>             </resource-ref>
>         </entity>
> 
>         <session>
>             <ejb-name>PhoneBookSession</ejb-name>
>             
> <jndi-name>org.acme.phonebook.ejb/PhoneBookSession/Home</jndi-name>
>             
> <local-jndi-name>java:comp/env/ejb/PhoneBookSessionLocal</local-jndi-name>
>         </session>
>     </enterprise-beans>
> </openejb-jar>
> 
> and finally, in my ejb-jar.xml inside the <entity> I have this:
> 
>          <resource-ref >
>             <description><![CDATA[This is a reference to a JDBC 
> database.]]></description>
>             <res-ref-name>jdbc/basic/entityDatabase</res-ref-name>
>             <res-type>javax.sql.DataSource</res-type>
>             <res-auth>Container</res-auth>
>          </resource-ref>
> 
> Now, the strange thing is that if I deploy the mysql-plan.xml file in 
> the global scoped fashion, I can write the the database by creating CMP 
> beans. But if I use the application scoped method, I get the following 
> error:
> 
> 22:15:19,898 WARN  [SystemExceptionInterceptor] PhoneBookSession
> java.lang.NullPointerException
>         at 
> org.tranql.sql.DataSourceDelegate.getConnection(DataSourceDelegate.ja
> va:36)
>         at 
> org.tranql.sql.jdbc.JDBCUpdateCommand.execute(JDBCUpdateCommand.java:
> 62)
>         at 
> org.tranql.cache.SimpleFlushStrategy.flush(SimpleFlushStrategy.java:5
> 9)
>         at 
> org.tranql.cache.SimpleFlushStrategy.flush(SimpleFlushStrategy.java:4
> 6)
>         at org.tranql.cache.InTxCache.flush(InTxCache.java:85)
>         at 
> org.apache.geronimo.transaction.context.AbstractTransactionContext.fl
> ushState(AbstractTransactionContext.java:116)
>         at 
> org.apache.geronimo.transaction.context.InheritableTransactionContext
> .complete(InheritableTransactionContext.java:172)
>         at 
> org.apache.geronimo.transaction.context.InheritableTransactionContext
> .commit(InheritableTransactionContext.java:143)
>         at 
> org.openejb.transaction.ContainerPolicy$TxRequiresNew.invoke(Containe
> rPolicy.java:246)
>         at 
> org.openejb.transaction.TransactionContextInterceptor.invoke(Transact
> ionContextInterceptor.java:80)
>         at 
> org.openejb.slsb.StatelessInstanceInterceptor.invoke(StatelessInstanc
> eInterceptor.java:98)
>         at 
> org.openejb.transaction.ContainerPolicy$TxRequiresNew.invoke(Containe
> rPolicy.java:234)
>         at 
> org.openejb.transaction.TransactionContextInterceptor.invoke(Transact...
> 
> What am I doing wrong for Application scoping my database configuration?
> 
> Thanks in advance, and sorry for all of the cut-n-pasting here.
> 
> Cheers.
> 
> -Neal
> 
> 

Mime
View raw message