Hi all,
I have tried to strip down the information to the bare essential
information for clarity and brevity.
Again any Help is greatly appreciated.
Ron.
The basic problem is that I am getting an null DataObjects
object back from jndi on JBoss when using a lookup from
an ejb.
ModelService is my EJB Session Bean.
I have a web service using apache axis that
accesses a local Service Broker that does a
lookup of the ejb bean using the ModelService
Name:
Object objRef = context.lookup("ejb/sms3/ModelService");
*** In the ejbCreate of ModelService, I create a
ModelServiceDao object. In the ModelServiceDao
constructor I create a CastorHelper object. In
Castor Helper constructor I try to create a
DataObjects using a lookup as follows:
Context compEnv = (Context) iniCtx.lookup("java:comp/env");
_jdo = (DataObjects) compEnv.lookup("jdo/modelJDO");
jdo/modelJDO is referenced in the ejb-jar as follows
- <resource-ref>
<res-ref-name>jdo/modelJDO</res-ref-name>
<res-type>org.exolab.castor.jdo.DataObjects</res-type>
<res-auth>Container</res-auth>
</resource-ref>
*** jdo/modelJDO is mapped to a resourceManager in JBoss.xml under the name
CastorModelJDO.
CastorModelJDO refers to the resource jndi name
Java:/castorModel that is defined in an mbean.
- <resource-ref>
<res-ref-name>jdo/modelJDO</res-ref-name>
<resource-name>CastorModelJDO</resource-name>
</resource-ref>
- <resource-manager res-class="org.jboss.ejb.deployment.CastorJDOResource"> ******* is
this the right class????
<res-name>CastorModelJDO</res-name>
<res-jndi-name>java:/castorModel</res-jndi-name>
</resource-manager>
*** Here is the binding information for jdo/modelJDO
15:35:38,438 INFO [STDOUT] modelJDO: javax.naming.LinkRef:Reference Class Name:
javax.naming.LinkRef
Type: LinkAddress
Content: java:/castorModel
*** In the MBean I define a castorJDO resource under the jndi name java:/castorModel
as follows:
<mbean code="org.jboss.jdo.castor.CastorJDOImpl" name="jboss:service=CastorJDO">
<attribute name="Configuration">file:../server/sms3/conf/database.xml</attribute>
<attribute name="JndiName">java:/castorModel</attribute>
...</mbean>
*** in the database.xml file I reference a MSSQL
DataSource as follows:
<jndi name="java:/MSSQLXaDS"/>
*** I have registered the MSSQL datasource in an
MBean as:
<mbean code="org.jboss.resource.connectionmanager.XATxConnectionManager"
name="jboss.jca:service=XATxCM,name=MSSQLXaDS">
...</mbean>
So what's my problem (technically speaking :)
I hope this is more clear and concise.
Thanks again,
Ron
> -----Original Message-----
> From: Ron Ridenour
> Sent: Wednesday, October 23, 2002 5:41 PM
> To: '[EMAIL PROTECTED]'
> Subject: null _jdo DataObject using JNDI lookup on JBoss-3.0.3 from ejb helper
>class
>
> I used the rooms example by Terry Child combined with the template example from the
>src
> distribution to try to get Castor working with MSSQL and Jboss-3.0.3.
> The rooms example was for 2.x so I modified it as best I could. The problem I am
>having
> is that I am getting a null _jdo object back from the jndi lookup. any help would be
> greatly appreciated.
>
>
>**************************************************************************************************
> ************ The Problem ****
>
>**************************************************************************************************
>
> The problem is that things look like they are bound correctly,
> but I get a null object back from the call to:
> _jdo = (DataObjects) compEnv.lookup("jdo/modelJDO"); in CastorHelper()
>
>
>*************************************************************************************************
>
>
>****************************************************************************************>
>
> Cleint code from CastorHelper:
>
>****************************************************************************************
>
> import org.exolab.castor.jdo.DataObjects;
> public class CastorHelper implements java.io.Serializable {
>
> public DataObjects _jdo;
>
> public CastorHelper() {
>
> Context compEnv = (Context) iniCtx.lookup("java:comp/env");
> _jdo = (DataObjects) compEnv.lookup("jdo/modelJDO");
> if (_jdo = =null) {
> //********************** here is the problem ************************
> //_jdo is null even though I did not get any Naming exceptions or
> //any other kind of exceptions
> //****************************************************************
>
> }
> }
> }
>
>****************************************************************************************
> ******** Here are the XDoclet entries that are in the ModelServiceBean ejb class
>******
>
>****************************************************************************************
>
> * @ejb:resource-ref res-name="jdo/modelJDO"
> * res-type="org.exolab.castor.jdo.DataObjects"
> * res-auth="Container"
> *
> * @jboss:resource-ref res-ref-name="jdo/modelJDO"
> * resource-name="CastorModelJDO"
> *
> * @jboss:resource-manager res-man-class="org.jboss.ejb.deployment.CastorJDOResource"
> * res-man-name="CastorModelJDO"
> * res-man-jndi-name="java:/castorModel"
> *
> * @jboss:resource-manager res-man-class="org.jboss.ejb.deployment.JDBCResource"
> * res-man-name="jdbc/castorJDBCModel"
> * res-man-jndi-name="java:/jdbc/castorJDBCModel"
>
>
>
>****************************************************************************************
> ********** ejb-jar.xml resulting from the above XDoclet tags.
>
>****************************************************************************************
> - <session>
> - <description>
> - <![CDATA[ Provides services related to the administration of Models
>ModelServiceBean Session Bean ATTENTION: Some of the XDoclet tags are hidden from
>XDoclet by adding a "--" between @ and the namespace.
> ]]>
> </description>
> <display-name>Model Service Bean</display-name>
> <ejb-name>test/ModelService</ejb-name>
> <home>com.myco.ejb.interfaces.ModelServiceHome</home>
> <remote>com.myco.ejb.interfaces.ModelService</remote>
> <ejb-class>com.myco.ejb.session.ModelServiceBean</ejb-class>
> <session-type>Stateful</session-type>
> <transaction-type>Container</transaction-type>
> - <resource-ref>
> <res-ref-name>jdo/modelJDO</res-ref-name>
> <res-type>org.exolab.castor.jdo.DataObjects</res-type>
> <res-auth>Container</res-auth>
> </resource-ref>
> </session>
>
>
>
>****************************************************************************************
> ********** jboss.xml resulting from the above XDoclet tags.
>
>****************************************************************************************
> - <jboss>
> - <enterprise-beans>
> - <session>
> <ejb-name>test/ModelService</ejb-name>
> <jndi-name>ejb/test/ModelService</jndi-name>
> - <resource-ref>
> <res-ref-name>jdo/modelJDO</res-ref-name>
> <resource-name>CastorModelJDO</resource-name>
> </resource-ref>
> </session>
> </enterprise-beans>
> - <resource-managers>
> - <resource-manager res-class="org.jboss.ejb.deployment.CastorJDOResource">
> <res-name>CastorModelJDO</res-name>
> <res-jndi-name>java:/castorModel</res-jndi-name>
> </resource-manager>
> - <resource-manager res-class="org.jboss.ejb.deployment.JDBCResource">
> <res-name>jdbc/castorJDBCModel</res-name>
> <res-jndi-name>java:/jdbc/castorJDBCModel</res-jndi-name>
> </resource-manager>
> </resource-managers>
> </jboss>
>
>
>
>
>****************************************************************************************>
>
> ********** mssql-xa-service.xml for establishing a DBConnection Pool with the Castor
>MBean at the end
>
>****************************************************************************************
> <mbean code="org.jboss.resource.connectionmanager.XATxConnectionManager"
> name="jboss.jca:service=XATxCM,name=MSSQLXaDS">
>
>
> <!-- For optional container managed security, include a login module
> configuration named MSSQLXaDbRealm in conf/login-conf.xml.
> Here is an example login module configuration for a
>ConfiguredIdentityLoginModule:
>
> <application-policy name = "MSSQLXaDbRealm">
> <authentication>
> <login-module code =
>"org.jboss.resource.security.ConfiguredIdentityLoginModule" flag ="required">
> <module-option name = "principal">yourprincipal</module-option>
> <module-option name = "userName">yourusername</module-option>
> <module-option name = "password">yourpassword</module-option>
> <module-option name =
>"managedConnectionFactoryName">jboss.jca:service=XATxCM,name=MSSQLXaDS</module-option>
> </login-module>
> </authentication>
> </application-policy>
>
> NOTE: the application-policy name attribute must match SecurityDomainJndiName,
>and the
> module-option name = "managedConnectionFactoryName"
> must match the object name of the ConnectionManager you are configuring here.
> -->
> <!--uncomment this line if you are using the MSSQLXaDbRealm above
> <attribute name="SecurityDomainJndiName">MSSQLXaDbRealm</attribute>
> -->
>
> <depends optional-attribute-name="ManagedConnectionFactoryName">
> <!--embedded mbean-->
> <mbean code="org.jboss.resource.connectionmanager.RARDeployment"
> name="jboss.jca:service=XATxDS,name=MSSQLXaDS">
>
> <attribute name="JndiName">MSSQLXaDS</attribute>
>
> <!--real attributes-->
> <attribute name="ManagedConnectionFactoryProperties">
> <properties>
> <config-property name="XADataSourceProperties"
>type="java.lang.String">ServerName=localhost;DatabaseName=testDB;SelectMethod=cursor</config-property>
>
> <config-property name="XADataSourceClass"
>type="java.lang.String">com.microsoft.jdbcx.sqlserver.SQLServerDataSource</config-property>
> </properties>
> </attribute>
> <!--hack-->
> <depends
>optional-attribute-name="OldRarDeployment">jboss.jca:service=RARDeployment,name=Minerva
> JDBC XATransaction ResourceAdapter</depends>
>
> </mbean>
> </depends>
> <depends optional-attribute-name="ManagedConnectionPool">
> <!--embedded mbean-->
> <mbean code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool"
> name="jboss.jca:service=XATxPool,name=MSSQLXaDS">
>
> <attribute name="MinSize">0</attribute>
> <attribute name="MaxSize">50</attribute>
> <attribute name="BlockingTimeoutMillis">5000</attribute>
> <attribute name="IdleTimeoutMinutes">15</attribute>
> <!--criteria indicates if Subject (from security domain) or app supplied
> parameters (such as from getConnection(user, pw)) are used to distinguish
> connections in the pool. Choices are
> ByContainerAndApplication (use both),
> ByContainer (use Subject),
> ByApplication (use app supplied params only),
> ByNothing (all connections are equivalent, usually if adapter supports
> reauthentication)-->
> <attribute name="Criteria">ByContainer</attribute>
> </mbean>
> </depends>
> <depends
>optional-attribute-name="CachedConnectionManager">jboss.jca:service=CachedConnectionManager</depends>
>
>
> <depends
>optional-attribute-name="JaasSecurityManagerService">jboss.security:service=JaasSecurityManager</depends>>
>
>
> <attribute name="TransactionManager">java:/TransactionManager</attribute>
>
> <!--make the rar deploy! hack till better deployment-->
> <depends>jboss.jca:service=RARDeployer</depends>
> </mbean>
>
> <mbean code="org.jboss.jdo.castor.CastorJDOImpl" name="jboss:service=CastorJDO">
> <attribute name="Configuration">file:../server/sms3/conf/database.xml</attribute>
> <attribute name="JndiName">java:/castorModel</attribute>
> <attribute name="LockTimeout">10000</attribute>
> <attribute name="LoggingEnabled">true</attribute>
> <attribute name="CommonClassPath">false</attribute>
> <attribute name="AutoStore">false</attribute>
> </mbean>
>
>
>
>****************************************************************************************
> ********** database.xml specified in the MBean above references the MSSQLXaDS bound
>above
>
>****************************************************************************************
> <database name="mssql" engine="sql-server" >
> <jndi name="java:/MSSQLXaDS"/>
> <mapping href="mapping.xml" />
> </database>
>
>
>
>****************************************************************************************
> ********** jndi bindings printed at runtime before
> ********** I invoke _jdo = (DataObjects) compEnv.lookup("jdo/modelJDO"); in
>CastorHelper()
>
>****************************************************************************************
> 15:35:38,307 INFO [STDOUT] CastorHelper(): binding for: java
> 15:35:38,307 INFO [STDOUT] MSSQLXaDS:
>org.jboss.resource.adapter.jdbc.JDBCDataSource:Reference Class Name:
>org.jboss.resource.adapter.jdbc.JDBCDataSource
> 15:35:38,307 INFO [STDOUT] CastorHelper(): name: MSSQLXaDS
> 15:35:38,307 INFO [STDOUT] CastorHelper(): object: Reference Class Name:
>org.jboss.resource.adapter.jdbc.JDBCDataSource
> .
> .
> .
> 15:35:38,438 INFO [STDOUT] CastorHelper(): bindings for jdo
> 15:35:38,438 INFO [STDOUT] CastorHelper(): binding for: jdo
> 15:35:38,438 INFO [STDOUT] modelJDO: javax.naming.LinkRef:Reference Class Name:
>javax.naming.LinkRef
> Type: LinkAddress
> Content: java:/castorModel
> 15:35:38,448 INFO [STDOUT] CastorHelper(): name: modelJDO
> 15:35:38,448 INFO [STDOUT] CastorHelper(): object: Reference Class Name:
>javax.naming.LinkRef
> Type: LinkAddress
> Content: java:/castorModel
>
>
>**************************************************************************************************
> ************ The Problem ****
>
>**************************************************************************************************
>
> *** Notice that the objects are References to classes rather than actual objects ***
>
> *** So the problem is that things look like they are bound correctly,
> but I get a null object back from the call to:
> _jdo = (DataObjects) compEnv.lookup("jdo/modelJDO"); in CastorHelper()
>
>
>*************************************************************************************************
>
>
>
>
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev