Simon,
I tried to fetch the Employer enitity bean in the servlet and it works fine.
However, when
i try fetching the entity bean in the session bean it appears that it does
not work.
I tried fixing the deployment descriptor to included the following:
============================================================================
===
[ejb-jar.xml file]
<?xml version="1.0" encoding="Cp1252"?>
<ejb-jar>
<description>jBoss test application </description>
<display-name>Test</display-name>
<enterprise-beans>
<entity>
<ejb-name>Employer</ejb-name>
<home>org.adv.test.EmployerHome</home>
<remote>org.adv.test.EmployerRemote</remote>
<ejb-class>org.adv.test.EmployerBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-field><field-name>id</field-name></cmp-field>
<cmp-field><field-name>name</field-name></cmp-field>
<cmp-field><field-name>contact</field-name></cmp-field>
<cmp-field><field-name>addressLine1</field-name></cmp-field>
<cmp-field><field-name>addressLine2</field-name></cmp-field>
<cmp-field><field-name>addressLine3</field-name></cmp-field>
<cmp-field><field-name>location</field-name></cmp-field>
<cmp-field><field-name>phoneStd</field-name></cmp-field>
<cmp-field><field-name>phoneNumber</field-name></cmp-field>
<cmp-field><field-name>faxStd</field-name></cmp-field>
<cmp-field><field-name>faxNumber</field-name></cmp-field>
<cmp-field><field-name>email</field-name></cmp-field>
<primkey-field>id</primkey-field>
</entity>
<session>
<ejb-name>EmployerLibrary</ejb-name>
<home>org.adv.test.EmployerLibraryHome</home>
<remote>org.adv.test.EmployerLibraryRemote</remote>
<ejb-class>org.adv.test.EmployerLibraryBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
<ejb-ref>
<ejb-ref-name>ejb/Employer</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>org.adv.test.EmployerHome</home>
<remote>org.adv.test.EmployerRemote</remote>
<ejb-link>org.adv.test.EmployerBean</ejb-link>
</ejb-ref>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>Employer</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
============================================================================
===
[jboss.xml file]
<?xml version="1.0" encoding="Cp1252"?>
<jboss>
<resource-managers>
<resource-manager res-class="org.jboss.ejb.deployment.JDBCResource">
<res-name>EmployerDB</res-name>
<res-jndi-name>xa.ACCDB</res-jndi-name>
</resource-manager>
</resource-managers>
<enterprise-beans>
<entity>
<ejb-name>Employer</ejb-name>
<jndi-name>Employer</jndi-name>
</entity>
<session>
<ejb-name>EmployerLibrary</ejb-name>
<jndi-name>EmployerLibrary</jndi-name>
</session>
</enterprise-beans>
</jboss>
*** And i get the following error:
[Auto deploy] Auto deploy of file:/usr/local/jboss/deploy/employer.jar
[J2EE Deployer] Deploy J2EE application:
file:/usr/local/jboss/deploy/employer.jar
[J2EE Deployer] Create application employer.jar
[J2EE Deployer] Installing EJB package: employer.jar
[J2EE Deployer] Starting module employer.jar
[Container factory]
Deploying:file:/usr/local/jboss/tmp/deploy/employer.jar/ejb1006.jar
[Verifier] Verifying
file:/usr/local/jboss/tmp/deploy/employer.jar/ejb1006.jar
[Container factory] Deploying Employer
[Container factory] Deploying EmployerLibrary
[JAWS] Table 'Employer' already exists
[Container factory] org.jboss.ejb.DeploymentException: Bean
org.adv.test.EmployerBean not found within this application.
[Container factory] at
org.jboss.ejb.Container.setupEnvironment(Container.java:398)
[Container factory] at org.jboss.ejb.Container.init(Container.java:259)
[Container factory] at
org.jboss.ejb.StatelessSessionContainer.init(StatelessSessionContainer.java:
141)
[Container factory] at
org.jboss.ejb.Application.init(Application.java:158)
[Container factory] at
org.jboss.ejb.ContainerFactory.deploy(ContainerFactory.java:733)
[Container factory] at
org.jboss.ejb.ContainerFactory.deploy(ContainerFactory.java:272)
[Container factory] at java.lang.reflect.Method.invoke(Native Method)
[Container factory] at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1628)
[Container factory] at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
[Container factory] at
org.jboss.deployment.J2eeDeployer.startApplication(J2eeDeployer.java:645)
[Container factory] at
org.jboss.deployment.J2eeDeployer.deploy(J2eeDeployer.java:137)
[Container factory] at java.lang.reflect.Method.invoke(Native Method)
[Container factory] at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1628)
[Container factory] at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
[Container factory] at
org.jboss.ejb.AutoDeployer.deploy(AutoDeployer.java:332)
[Container factory] at
org.jboss.ejb.AutoDeployer.run(AutoDeployer.java:268)
[Container factory] at java.lang.Thread.run(Thread.java:475)
[J2EE Deployer] Starting employer.jar failed!
[J2EE Deployer] Module employer.jar is not running
[J2EE Deployer] Destroying application employer.jar
[J2EE Deployer] deployment.cfg file deleted.
[J2EE Deployer] File tree file:/usr/local/jboss/tmp/deploy/employer.jar
deleted.
[Auto deploy] Deployment failed:file:/usr/local/jboss/deploy/employer.jar
[Auto deploy] org.jboss.deployment.J2eeDeploymentException: Error while
starting employer.jar: Could not deploy
file:/usr/local/jboss/tmp/deploy/employer.jar/ejb1006.jar
[Auto deploy] at
org.jboss.deployment.J2eeDeployer.startApplication(J2eeDeployer.java:665)
[Auto deploy] at
org.jboss.deployment.J2eeDeployer.deploy(J2eeDeployer.java:137)
[Auto deploy] at java.lang.reflect.Method.invoke(Native Method)
[Auto deploy] at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1628)
[Auto deploy] at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
[Auto deploy] at org.jboss.ejb.AutoDeployer.deploy(AutoDeployer.java:332)
[Auto deploy] at org.jboss.ejb.AutoDeployer.run(AutoDeployer.java:268)
[Auto deploy] at java.lang.Thread.run(Thread.java:475)
Do you know what <ejb-ref-name>ejb/Employer</ejb-ref-name> should have
been???
Or is there something missing here????
-John
-----Original Message-----
From: Bordet, Simone [mailto:[EMAIL PROTECTED]]
Sent: Thursday, 14 December 2000 10:07 p.m.
To: 'jBoss Developer'
Subject: RE: [jBoss-Dev] Transaction rolled
back:javax/rmi/PortableRemoteO bject ?!!?!?
Hey John,
I see that you're using jdk 1.2.2 invokers (and I think you're using jdk
1.2.2); I think that PortableRemoteObject has been moved to core JDK only
with 1.3, so your problem seems that you cannot find the
PortableRemoteObject class. Is this your case ? If so, you'll maybe need to
add javax.rmi package for jdk 1.2.2 to your classpath.
The rollback is a natural consequence of an application exception thrown:
you don't want to commit what you have only partially done before the
exception throw. So the container rollbacks the transaction.
HTH,
Simon
> BTW: It appears to break on the line....
>
> EmployerHome employerHome = (EmployerHome)
> PortableRemoteObject.narrow(ref,
> EmployerHome.class);
>
> What would cause the transaction to roll back????
>
> -John
>
> -----Original Message-----
> From: John Pericos [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, 14 December 2000 9:21 a.m.
> To: 'jBoss Developer'
> Subject: [jBoss-Dev] Transaction rolled
> back:javax/rmi/PortableRemoteObject ?!!?!?
>
>
> Hi,
>
> I have a prob with Jboss. I'm executing a session bean from a
> servlet in
> Resin. The
> session bean itself fetchs a entity bean like so:
>
>
>
> public String fetchEmployer(String id)
> {
> System.out.println ("Someone called `fetchEmployer!'");
> String employerDetails = "";
> int employerID = new Integer(id.trim()).intValue();
> System.setProperty("java.naming.factory.initial",
> "org.jnp.interfaces.NamingContextFactory");
> System.setProperty("java.naming.provider.url",
> "localhost:1099");
> try {
> // Get context from EJBserver
> InitialContext jndiContext = new InitialContext();
> // Get the home interface
> Object ref = jndiContext.lookup("Employer");
> EmployerHome employerHome = (EmployerHome)
> PortableRemoteObject.narrow(ref, EmployerHome.class);
> System.out.println ("Got home of Employer...");
> EmployerRemote employer = employerHome.findByPrimaryKey( new
> EmployerPK( employerID ) );
> System.out.println ("Got remote of Employer...");
> employerDetails = employer.getDetails();
>
> } catch(Exception e) {
> System.out.println(e.toString());
> }
> System.out.println ("Returning string...");
> return employerDetails;
> }
>
> And i get this sort of error....
>
>
> java.rmi.ServerException: RemoteException occurred in server
> thread; nested
> exception is:
> java.rmi.ServerException: Transaction rolled
> back:javax/rmi/PortableRemoteObject
> java.rmi.ServerException: Transaction rolled
> back:javax/rmi/PortableRemoteObject
> at
> sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer
> (StreamRemoteC
> all.java:245)
> at
> sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCal
> l.java:220)
> at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)
> at
> org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker_Stub.in
> voke(Unknown
> Source)
> at
> org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.in
> voke(Stateless
> SessionProxy.java:175)
> at
> org.jboss.proxy.ProxyCompiler$Runtime.invoke(ProxyCompiler.java:74)
> at
> org.adv.test.EmployerLibraryRemote$Proxy.fetchEmployer(Unknown
> Source)
> at JBossServlet.doGet(JBossServlet.java:59)
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:102)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:83)
> at
> com.caucho.server.http.AbstractRequest.service(AbstractRequest
> .java:452)
> at
> com.caucho.server.http.AbstractRequest.service(AbstractRequest
> .java:395)
> at
> com.caucho.server.http.PageCache$Entry.service(PageCache.java:256)
> at
> com.caucho.server.http.PageCache.service(PageCache.java:105)
> at
> com.caucho.server.http.VirtualHost.service(VirtualHost.java:424)
> at com.caucho.server.http.Request.dispatch(Request.java:212)
> at
> com.caucho.server.http.RunnerRequest.handleRequest(RunnerReque
> st.java:313)
> at
> com.caucho.server.http.RunnerRequest.handleConnection(RunnerRe
> quest.java:260
> )
> at com.caucho.server.TcpConnection.run(TcpConnection.java:142)
> at java.lang.Thread.run(Thread.java:475)
>
>
> Any ideas or suggestions????
>
> Thanks
>
> -John
>