Hey John,
> Sent: giovedì 14 dicembre 2000 23:22
Ugh ! ^^^^^^^^^^^^^^^^^^^^^^^^^^^
For your problem:
ejb-link is wrong, should be ejb-name of the bean so in your case
"Employer", not "org.adv.test.EmployerBean"
ejb-ref-name is OK, "ejb/Employer".
Remember that from the session bean you should lookup it via the name
"java:/comp/env/ejb/Employer"
Cheerio,
Simon
> 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(StatelessSessionC
> ontainer.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(J2eeDeploye
> r.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(J2eeDeploye
> r.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
> >
>