tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From uglything <juanma.cabr...@gmail.com>
Subject Re: OpenEJB.war outside webapps
Date Fri, 06 Jun 2008 10:09:21 GMT


Dain Sundstrom wrote:
> 
> 
> 
> On Jun 5, 2008, at 2:52 AM, uglything wrote:
> 
>> 
>> Nothing complex... But Tomcat tries to load MyWebApp before openejb,  
>> as
>> expected from the specifications... Hence the deployment fails.
>>
>>
>>
>> Well, to address that, I tried to add explicitely the openejb  
>> context before
>> MyWebApp :
>>
>>
>>
>>     &lt;Context docBase="openejb" /&gt;
>>     &lt;Context docBase="../../target/MyWebApp" /&gt;
> 
> If you add the OpenEJBListener to the server.xml file, OpenEJB will  
> always initialize first.  Simply copy the openejb-javaagent.jar file  
> to the Tomcat lib directory, and add this declaration at the top of  
> the server.xml file:
> 
>    
>    
> 
> Since Tomcat starts components in the order they are declared in the  
> server.xml file, OpenEJB will guaranteed to be running by the time  
> your application is deployed.
> 
> -dain
> 
> 
> 


Thanks dain, that was helpful.


I installed the javaagent and the openejb context loads at tomcat startup
prior to anything else.

Now my context discovered in the webapps loads at the correct time.


I still have a problem when I explicitely set a new context in the
server.xml...

OpenEJB loads first, but when MyWebApp loads, the following exception arises
:



ERROR - Unable to load web.xml in war testMain: Exception: Cannot read the
web.xml file: jndi:/localhost/testMain/WEB-INF/web.xml: null
org.apache.openejb.OpenEJBException: Cannot read the web.xml file:
jndi:/localhost/testMain/WEB-INF/web.xml: null
	at
org.apache.openejb.config.ReadDescriptors.readWebApp(ReadDescriptors.java:474)
	at
org.apache.openejb.tomcat.catalina.TomcatWebAppBuilder.createWebModule(TomcatWebAppBuilder.java:595)
	at
org.apache.openejb.tomcat.catalina.TomcatWebAppBuilder.loadApplication(TomcatWebAppBuilder.java:526)
	at
org.apache.openejb.tomcat.catalina.TomcatWebAppBuilder.start(TomcatWebAppBuilder.java:229)
	at
org.apache.openejb.tomcat.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:58)
	at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4239)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
	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:585)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.io.FileNotFoundException
	at
org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:298)
	at java.net.URL.openStream(URL.java:1007)
	at
org.apache.openejb.config.ReadDescriptors.readWebApp(ReadDescriptors.java:468)
	... 19 more


Strange, isn't it ?


The rest of the ejb-jars loads correctly, but I have a problem then in a
servlet :


INFO  - schema update complete
INFO  - Jndi(name=ConcreteChildOneManagerImplLocal) -->
Ejb(deployment-id=ConcreteChildOneManagerImpl)
INFO  - Created Ejb(deployment-id=ConcreteChildOneManagerImpl,
ejb-name=ConcreteChildOneManagerImpl, container=Default Stateless Container)
INFO  - Jndi(name=MyTestBeanLocal) --> Ejb(deployment-id=MyTestBean)
INFO  - Created Ejb(deployment-id=MyTestBean, ejb-name=MyTestBean,
container=Default Stateless Container)
INFO  - Jndi(name=ConcreteChildTwoManagerImplLocal) -->
Ejb(deployment-id=ConcreteChildTwoManagerImpl)
INFO  - Created Ejb(deployment-id=ConcreteChildTwoManagerImpl,
ejb-name=ConcreteChildTwoManagerImpl, container=Default Stateless Container)
INFO  - Deployed
Application(path=D:\projets\CCV-Core\CCV-Core-TestMain\tomcat1\webapps\..\..\target\CCV-Core-TestMain-0.0.1-SNAPSHOT)
6 juin 2008 11:46:17 org.apache.catalina.core.StandardContext listenerStart
GRAVE: Erreur lors de la configuration de la classe d'écoute de
l'application (application listener) LaunchTest
javax.naming.NameNotFoundException: Le Nom LaunchTest n'est pas lié à ce
Contexte
	at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
	at
org.apache.catalina.util.DefaultAnnotationProcessor.lookupFieldResource(DefaultAnnotationProcessor.java:203)
	at
org.apache.catalina.util.DefaultAnnotationProcessor.processAnnotations(DefaultAnnotationProcessor.java:139)
	at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3777)
	at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4337)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
	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:585)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
6 juin 2008 11:46:17 org.apache.catalina.core.StandardContext listenerStart


The message of the exception could be translated in plain ol' english as
follow :


ERROR: Error while configuring the application listener LaunchTest
javax.naming.NameNotFoundException: The Name LaunchTest isn't bound to any
context



Here is the source for the listener, which by the way works just fine
without declaring the context in the servlet.xml :



import javax.ejb.EJB;
import javax.naming.NamingException;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import test.beans.TestBean;

public class LaunchTest implements ServletContextListener {
	
	@EJB
	private TestBean bean;
	
	public void contextDestroyed(ServletContextEvent arg0) {
	}

	public void contextInitialized(ServletContextEvent arg0) {
		try {
			System.out.println("/***************************************/");
			System.out.println("/* run                           */");
			System.out.println("/***************************************/");
			bean.run();
			
		} catch (NamingException e) {
			throw new RuntimeException(e);
		}

	}
}



The context in the servlet.xml is declared as follow:



     &lt;Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false"&gt;
        &lt;Context docBase="../../target/CCV-Core-TestMain-0.0.1-SNAPSHOT"
path="testMain"/&gt;
     &lt;/Host&gt;


CCV-Core-TestMain-0.0.1-SNAPSHOT is the real name for MyWebApp...



Anyway, thanks a lot for your help.

I greatly appreciate the responsiveness of the OpenEJB crew.



Cheers,


Juan Manuel


-- 
View this message in context: http://www.nabble.com/OpenEJB.war-outside-webapps-tp17666227p17688720.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message