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 :
>>
>>
>>
>>     <Context docBase="openejb" />
>>     <Context docBase="../../target/MyWebApp" />
> 
> 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:



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


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.

Reply via email to