Hi everybody,
I'm experiencing a problem when I add a webModule in addition of a Rest
webModule (Apache CXF - JAX-RS) in my ear on Tomee Plus 1.5.2 (Tested on
SNAPSHOT 1.5.3 and 1.6.0)
Goal :
- Have Rest webModule plus an other webModule in my ear
Description :
I have ear which contains an ejb, a simple rest service and a web
application
Problem :
When my ear has two webModules with at least one is a REST WS, Tomee throws
errors and the WS is not working. See the output below :
-------------------------
GRAVE: error invoking
org.apache.openejb.observer.ObserverManager$Observer@1cacd5d4
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.openejb.observer.ObserverManager$Observer.invoke(ObserverManager.java:145)
at
org.apache.openejb.observer.ObserverManager.fireEvent(ObserverManager.java:69)
at
org.apache.openejb.loader.SystemInstance.fireEvent(SystemInstance.java:107)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.afterStart(TomcatWebAppBuilder.java:1486)
at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:110)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at
org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:168)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.openejb.server.rest.OpenEJBRestRuntimeException: can't
find context
at
org.apache.openejb.server.rest.EJBRestServiceInfo.<init>(EJBRestServiceInfo.java:27)
at
org.apache.openejb.server.rest.RESTService.getRestEjbs(RESTService.java:390)
at
org.apache.openejb.server.rest.RESTService.afterApplicationCreated(RESTService.java:105)
at
org.apache.tomee.webservices.TomeeJaxRsService.afterApplicationCreated(TomeeJaxRsService.java:51)
... 20 more
-------------------------
I have created simple project to reproduce problem. (src :
https://github.com/xesnet/test/tree/master/bugtomee)
In this example, I have two webModule which contains Rest WS but the problem
is the same when I have webModule of Rest WS + standard webModule
Example Project structure :
+--- pom.xml
|
+--- ear
| +--- pom.xml
|
+--- ejb
| +--- pom.xml
| +--- src/main/java/fr/xesnet/test/projectTest/EjbTest.java
|
+--- rest
| +--- pom.xml
| +--- src/main
| +--- java/fr/xesnet/test/projectTest/Rest/TestRest.java
| +--- webapp/WEB-INF/web.xml
|
+--- rest2
+--- pom.xml
+--- src/main
+--- java/fr/xesnet/test/projectTest/Rest2/TestRest2.java
+--- webapp/WEB-INF/web.xml
* EjbTest.java :
-------------------------
[...]
@Stateless
public class EjbTest {
public String getTest() {
return "SUCCESS";
}
}
-------------------------
* TestRest.java :
-------------------------
[...]
@Path("/test")
@Stateless
public class TestRest {
@EJB
private EjbTest ejbTest;
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/version")
public String version() {
return ejbTest.getTest();
}
}
-------------------------
* TestRest2.java :
-------------------------
[...]
@Path("/test2")
@Stateless
public class TestRest2 {
@EJB
private EjbTest ejbTest;
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/version2")
public String version() {
return ejbTest.getTest();
}
}
-------------------------
* web.xml (Rest) :
-------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>rest</display-name>
</web-app>
-------------------------
* web.xml (Rest2) :
-------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>rest2</display-name>
</web-app>
-------------------------
When I deploy, I have theses errors on catalina.out :
-------------------------
GRAVE: Error merging Java EE JNDI entries in to war /projectTest-rest:
Exception: Error building bean 'TestRest2'. Exception: class
org.apache.openejb.OpenEJBException: Error while loading bean class
fr.xesnet.test.projectTest.Rest2.TestRest2 for bean TestRest2. Received
message: Cannot locate the class fr.xesnet.test.projectTest.Rest2.TestRest2
from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest2-1.0-SNAPSHOT]:
Error while loading bean class fr.xesnet.test.projectTest.Rest2.TestRest2
for bean TestRest2. Received message: Cannot locate the class
fr.xesnet.test.projectTest.Rest2.TestRest2 from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest2-1.0-SNAPSHOT]
org.apache.openejb.OpenEJBException: Error building bean 'TestRest2'.
Exception: class org.apache.openejb.OpenEJBException: Error while loading
bean class fr.xesnet.test.projectTest.Rest2.TestRest2 for bean TestRest2.
Received message: Cannot locate the class
fr.xesnet.test.projectTest.Rest2.TestRest2 from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest2-1.0-SNAPSHOT]:
Error while loading bean class fr.xesnet.test.projectTest.Rest2.TestRest2
for bean TestRest2. Received message: Cannot locate the class
fr.xesnet.test.projectTest.Rest2.TestRest2 from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest2-1.0-SNAPSHOT]
at
org.apache.openejb.assembler.classic.EjbJarBuilder.build(EjbJarBuilder.java:80)
at
org.apache.openejb.assembler.classic.Assembler.initEjbs(Assembler.java:857)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1241)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1033)
at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:124)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.openejb.OpenEJBException: Error while loading bean
class fr.xesnet.test.projectTest.Rest2.TestRest2 for bean TestRest2.
Received message: Cannot locate the class
fr.xesnet.test.projectTest.Rest2.TestRest2 from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest2-1.0-SNAPSHOT]
at
org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.load(EnterpriseBeanBuilder.java:426)
at
org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.loadClass(EnterpriseBeanBuilder.java:403)
at
org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.build(EnterpriseBeanBuilder.java:79)
at
org.apache.openejb.assembler.classic.EjbJarBuilder.build(EjbJarBuilder.java:65)
... 15 more
-------------------------
and
-------------------------
GRAVE: Error merging Java EE JNDI entries in to war /projectTest-rest2:
Exception: Error building bean 'TestRest'. Exception: class
org.apache.openejb.OpenEJBException: Error while loading bean class
fr.xesnet.test.projectTest.Rest.TestRest for bean TestRest. Received
message: Cannot locate the class fr.xesnet.test.projectTest.Rest.TestRest
from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest-1.0-SNAPSHOT]:
Error while loading bean class fr.xesnet.test.projectTest.Rest.TestRest for
bean TestRest. Received message: Cannot locate the class
fr.xesnet.test.projectTest.Rest.TestRest from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest-1.0-SNAPSHOT]
org.apache.openejb.OpenEJBException: Error building bean 'TestRest'.
Exception: class org.apache.openejb.OpenEJBException: Error while loading
bean class fr.xesnet.test.projectTest.Rest.TestRest for bean TestRest.
Received message: Cannot locate the class
fr.xesnet.test.projectTest.Rest.TestRest from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest-1.0-SNAPSHOT]:
Error while loading bean class fr.xesnet.test.projectTest.Rest.TestRest for
bean TestRest. Received message: Cannot locate the class
fr.xesnet.test.projectTest.Rest.TestRest from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest-1.0-SNAPSHOT]
at
org.apache.openejb.assembler.classic.EjbJarBuilder.build(EjbJarBuilder.java:80)
at
org.apache.openejb.assembler.classic.Assembler.initEjbs(Assembler.java:857)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1241)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1033)
at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:124)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.openejb.OpenEJBException: Error while loading bean
class fr.xesnet.test.projectTest.Rest.TestRest for bean TestRest. Received
message: Cannot locate the class fr.xesnet.test.projectTest.Rest.TestRest
from the codebase
[/home/pp/Desktop/apache-tomee-plus-1.5.2/apps/projectTest-ear-1.0-SNAPSHOT/projectTest-rest-1.0-SNAPSHOT]
at
org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.load(EnterpriseBeanBuilder.java:426)
at
org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.loadClass(EnterpriseBeanBuilder.java:403)
at
org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.build(EnterpriseBeanBuilder.java:79)
at
org.apache.openejb.assembler.classic.EjbJarBuilder.build(EjbJarBuilder.java:65)
... 15 more
-------------------------
Any suggestion ?
--
View this message in context:
http://openejb.979440.n4.nabble.com/Error-merging-Java-EE-JNDI-entries-in-to-war-tp4663181.html
Sent from the OpenEJB User mailing list archive at Nabble.com.