I have successfully run this example using Eclipse 3.4.1 and Geronimo 2.1.3, and only the CalcServlet† code was a bit differnent:

----------------------------------------------------------
@EJB(name = "ejb/CalculatorRemote")
††† private CalculatorRemote† calculator;
-----------------------------------------------------------

And I didn't package EJB and Web as a EAR, but added the EJB project to the build path of Web project, and use "Add and Remove Projects" in Eclipse plugin.

Hope this page gives you some hint:
http://cwiki.apache.org/GMOxDOC21/web-application-for-ejb-access.html


Best† Regards,
Ying Tang

2009/4/1 David Jencks <david_jencks@yahoo.com>
It looks like the critical bit of stack trace is this:


Caused by: java.io.NotSerializableException:
org.apache.openejb.assembler.classic.JndiEncBuilder$Ref
† † † †at java.io.ObjectOutputStream.writeObject0(Unknown Source)

In Openejb trunk this is certainly serialzable and I don't think we could have released anything with this problem. †On the other hand I have a faint recollection of seeing a similar problem in the past.

Which geronimo version are you using? †Can you deploy your ear from the command line, not using eclipse?

thanks
david jencks



On Mar 31, 2009, at 5:46 PM, Antonio Forniť wrote:


Hello!

First of all, I've been looking for a similar post but surprisingly I didn't
find anything, so I hope I'm not asking something that it's been answered
before.

I'm creating a basic JEE5 app with Eclipse plugin. It all works well until I
try to use an EJB. I've created a Dynamic Web Project, then a EJB Project
and finally an Enterprise Application Project in which I've included the
other two. It compiles without problems.

But when I start Geronimo, and it seems everything is gone ok and the server
is running it says:

Geronimo startup complete
00:10:32,500 INFO †[config] Configuring Service(id=Default Stateless
Container, type=Container, provider-id=Default Stateless Container)
00:10:32,500 INFO †[config] Configuring Service(id=Default Stateful
Container, type=Container, provider-id=Default Stateful Container)
00:10:32,500 INFO †[config] Configuring Service(id=Default BMP Container,
type=Container, provider-id=Default BMP Container)
00:10:32,500 INFO †[config] Configuring Service(id=Default CMP Container,
type=Container, provider-id=Default CMP Container)
00:10:32,500 INFO †[config] Configuring app: default/GeronimoEA/1.0/car
00:10:32,703 INFO †[OpenEJB] Auto-deploying ejb Calculator:
EjbDeployment(deployment-id=GeronimoEJB.jar/Calculator)
00:10:32,718 INFO †[config] Loaded Module: default/GeronimoEA/1.0/car
00:10:33,609 WARN †[startup] Unresolved ejb reference
"com.redondel.servlet.CalcServlet/calculator" in bean "GeronimoEnc". †Will
attempt resolution again at runtime.
00:10:33,703 WARN †[startup] Unresolved ejb reference
"com.redondel.servlet.CalcServlet/calculator" in bean "GeronimoEnc". †Will
attempt resolution again at runtime.
00:10:33,921 ERROR [Deployer] Deployment failed due to
java.io.IOException: Unable to serialize GBeanData for
default/GeronimoEA/1.0/car?J2EEApplication=default/GeronimoEA/1.0/car,j2eeType=WebModule,name=GeronimoWEB.war
† † † †at
org.apache.geronimo.kernel.config.SerializedGBeanState.storeGBeans(SerializedGBeanState.java:145)
† † † †at
org.apache.geronimo.kernel.config.SerializedGBeanState.writeObject(SerializedGBeanState.java:92)
† † † †at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
† † † †at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
† † † †at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
† † † †at java.lang.reflect.Method.invoke(Unknown Source)
† † † †at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject0(Unknown Source)
† † † †at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject0(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject(Unknown Source)
† † † †at java.util.HashMap.writeObject(Unknown Source)
† † † †at sun.reflect.GeneratedMethodAccessor114.invoke(Unknown Source)
† † † †at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
† † † †at java.lang.reflect.Method.invoke(Unknown Source)
† † † †at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject0(Unknown Source)
† † † †at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject0(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject(Unknown Source)
† † † †at
org.apache.geronimo.kernel.config.SerializedConfigurationMarshaler.writeConfigurationData(SerializedConfigurationMarshaler.java:66)
† † † †at
org.apache.geronimo.kernel.config.ConfigurationUtil.writeConfigurationData(ConfigurationUtil.java:216)
† † † †at
org.apache.geronimo.system.configuration.ExecutableConfigurationUtil.writeConfiguration(ExecutableConfigurationUtil.java:155)
† † † †at
org.apache.geronimo.system.configuration.RepositoryConfigurationStore.install(RepositoryConfigurationStore.java:338)
† † † †at org.apache.geronimo.deployment.Deployer.install(Deployer.java:348)
† † † †at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:256)
† † † †at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:133)
† † † †at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
† † † †at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
† † † †at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
† † † †at java.lang.reflect.Method.invoke(Unknown Source)
† † † †at
org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
† † † †at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
† † † †at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
† † † †at
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
† † † †at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:342)
† † † †at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
† † † †at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
† † † †at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
† † † †at java.lang.reflect.Method.invoke(Unknown Source)
† † † †at
org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
† † † †at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
† † † †at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
† † † †at
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
† † † †at
org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:172)
† † † †at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown
Source)
† † † †at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
† † † †at javax.management.remote.rmi.RMIConnectionImpl.doOperation(Unknown
Source)
† † † †at javax.management.remote.rmi.RMIConnectionImpl.access$200(Unknown Source)
† † † †at
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(Unknown
Source)
† † † †at java.security.AccessController.doPrivileged(Native Method)
† † † †at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(Unknown
Source)
† † † †at javax.management.remote.rmi.RMIConnectionImpl.invoke(Unknown Source)
† † † †at sun.reflect.GeneratedMethodAccessor111.invoke(Unknown Source)
† † † †at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
† † † †at java.lang.reflect.Method.invoke(Unknown Source)
† † † †at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
† † † †at sun.rmi.transport.Transport$1.run(Unknown Source)
† † † †at java.security.AccessController.doPrivileged(Native Method)
† † † †at sun.rmi.transport.Transport.serviceCall(Unknown Source)
† † † †at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
† † † †at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown
Source)
† † † †at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
† † † †at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
† † † †at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
† † † †at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Unable to write attribute: componentContext
in gbean:
default/GeronimoEA/1.0/car?J2EEApplication=default/GeronimoEA/1.0/car,j2eeType=WebModule,name=GeronimoWEB.war
† † † †at org.apache.geronimo.gbean.GBeanData.writeExternal(GBeanData.java:214)
† † † †at
org.apache.geronimo.kernel.config.SerializedGBeanState.storeGBeans(SerializedGBeanState.java:143)
† † † †... 73 more
Caused by: java.io.NotSerializableException:
org.apache.openejb.assembler.classic.JndiEncBuilder$Ref
† † † †at java.io.ObjectOutputStream.writeObject0(Unknown Source)
† † † †at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject0(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject(Unknown Source)
† † † †at java.util.HashMap.writeObject(Unknown Source)
† † † †at sun.reflect.GeneratedMethodAccessor114.invoke(Unknown Source)
† † † †at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
† † † †at java.lang.reflect.Method.invoke(Unknown Source)
† † † †at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject0(Unknown Source)
† † † †at java.io.ObjectOutputStream.writeObject(Unknown Source)
† † † †at org.apache.geronimo.gbean.GBeanData.writeExternal(GBeanData.java:212)
† † † †... 74 more


My code is very simple:

public class CalcServlet extends HttpServlet{
† † † †@EJB
† † † †Calculator calculator;
† † † †
† † † †@Override
† † † †public void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
† † † † † † † †doGet(req, resp);
† † † †}
† † † †
† † † †@Override
† † † †public void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
† † † † † † † †
† † † † † † † †int res = this.calculator.sum(10, 6);
† † † † † † † †
† † † † † † † †req.setAttribute("RES", res);
† † † † † † † †this.getServletContext().getRequestDispatcher("/res.jsp").forward(req,
resp);
† † † † † † † †
† }
}

...

@Stateless
public class Calculator implements CalculatorLocal, CalculatorRemote{

† † † †public int sum(int a, int b){
† † † † † † † †return a + b;
† † † †}
† † † †
}

...

@Local
public interface CalculatorLocal {
† † † †public int sum(int a, int b);
† † † †
}

...

@Remote
public interface CalculatorRemote {
† † † †public int sum(int a, int b);
† † † †
}



Thank you very much!!
--
View this message in context: http://www.nabble.com/Basic-EJB-app-structure-tp22817752s134p22817752.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.