David Carew wrote:
IIRC the Web App you refer to is specific to WebSphere. This is how
WebSphere handles EJB Web Services (ie the tooling adds a Web app that
points to a WebSphere specific class).
For Geronimo you don't need this web app and it's extremely doubtful
it would work. It would require dragging around WebSphere internal
classes. IMHO you're better off concentrating on getting the EJB Web
Service up and running the "Geronimo way". I found this section of
Aaron Mulder's book very helpful when I had to deploy an EJB Web
Service in Geronimo a while back.
http://www.chariotsolutions.com/geronimo/geronimo-1.1/web-services-server.html#id2633024
I know it is not needed in Geronimo but the actual end production
deployment is in WAS 6.0 and most likely will be needed there. I think
we have finally convinced the powers that be that although Geronimo is a
great product, WAS CE is NOT WAS and should not be treated as a drop in
replacement.
I wish I could have created this on my own 'the Geronimo way' but my
task was to port an existing ear. I actually got the EAR deployed and
started once I removed the WAR with the IBM specific class. I have no
idea if that class is necessary in this whole app (I actually do not
know what the internals of this thing does).
Anyway we have purchased the Developers edition of WAS 6.1 Express and
will use that. Personally I prefer Open Source tools but when you are
supporting an app that is running in and deployed upon a WAS 6.0
environment it makes sense to replicate that environment with something
very similar.
Thanks to all for your assistance.
I will continue to use geronimo for my personal endeavors.
Doug
On 5/23/07, *Doug Lochart* <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
I looked into the code where the exception is occuring and it seems to
be choking (Null Pointer Exception) on the context. Evidently the
context is null. I see there is a setContext() method on the
TomcatWebAppContext.java class but do not know where it is called
from.
I am focusing on the following part of the stack trace I recieved.
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:630)
at
org.apache.naming.resources.DirContextURLStreamHandler.bind(DirContextURLStreamHandler.java:233)
at
org.apache.geronimo.tomcat.TomcatWebAppContext.doStart(TomcatWebAppContext.java:443)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:981)
Am I correct in thinking it is a null context OR that part of the
context is null? Any idea what would cause this? I do NOT have a
geronimo-web.xml in the WAR that is deployed with the ear. This
is the
web.xml that is in the WAR.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns=" http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="WebApp_ID"
version="2.4" xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>HTTP router for
FrancePolicyServer_EJB.jar</display-name>
<display-name>HTTP router for
FrancePolicyServer_EJB.jar</display-name>
<servlet>
<display-name>Web services Router servlet for port-component
FrancePolicyService</display-name>
<display-name>Web services Router servlet for port-component
FrancePolicyService</display-name>
<servlet-name>FrancePolicyService</servlet-name>
<servlet-class>
com.ibm.ws.webservices.engine.transport.http.WebServicesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FrancePolicyService</servlet-name>
<url-pattern>services/FrancePolicyService</url-pattern>
</servlet-mapping>
</web-app>
see double instances for display-name and I am wondering could that be
the cause of anything. If so it should have choked during deployment
and not at runtime.
This is what was generated my the tool I have to use. Believe it
or not
this is one of 3 xml files that make up the entire contents of the
WAR.
The WebServicesServlet class is in the jar that I installed as a
common
lib. The other 2 xml docs are WAS 6.0 specific so should be
ignored. I
may take David's advice and try to deploy again without the WAR but as
of now the powers that be want to to try the whole shebang. I have a
feeling the servlet routing class will need the WAS files to route the
service requests anyway.
Anybody know what might cause the NPE? I will try and deploy without
the WAR next
thanks
Doug
Doug Lochart wrote:
> Anybody have any idea what might cause this exception? Since
the Ear
> deployed and it is trying to start I would assume it is
something with
> the EAR however I find it odd that a root cause is a Null Pointer
> Exception. Do any one of you developers know the area of code
the NPE
> is occurring and what might be causing it?
>
> thanks
>
> Doug
>
> Doug Lochart wrote:
>> I used the webconsole and added it to Common Libs. It ended up
>> creating a directory under the repository named dlochart (not sure
>> where it got that from) and dropped the jar under the name I gave
>> it. I looked and I saw axis so i blindly followed and added
this to
>> my plan.
>>
>> <sys:dependency>
>> <sys:groupId>geronimo</sys:groupId>
>> <sys:artifactId>sharedlib</sys:artifactId>
>> <sys:type>car</sys:type>
>> </sys:dependency>
>>
>> I still received the same exception so I looked again and I saw
there
>> was an axis under geronimo which told me that I need to sdjust my
>> dependency so I guessed it would need to be this:
>>
>> <sys:dependency>
>> <sys:groupId>dlochart</sys:groupId>
>> <sys:artifactId>ibm-runtime</sys:artifactId>
>> <sys:type>jar</sys:type>
>> </sys:dependency>
>>
>> Am I correct on this considering I have a jar under
>> $geronimo_home/repositories/dlochart/ibm-runtime/6.1.0 ?
>>
>> Either way I recieved the same exception as below. Any idea
what the
>> exception might mean?
>>
>> thanks
>>>>
>>>> org.apache.geronimo.kernel.config.LifecycleException: start of
>>>> france/FrancePolicyServerEar/1.0/car failed
>>>> at
>>>>
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:544)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:508)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.invoke
(<generated>)
>>>>
>>>> at
net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>>> at
>>>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke
(FastMethodInvoker.java:38)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:852)
>>>>
>>>> at
>>>> org.apache.geronimo.kernel.basic.BasicKernel.invoke
(BasicKernel.java:239)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:338)
>>>> at
>>>>
org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke
(<generated>)
>>>>
>>>> at
net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>>> at
>>>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke
(FastMethodInvoker.java:38)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:852)
>>>>
>>>> at
>>>> org.apache.geronimo.kernel.basic.BasicKernel.invoke
(BasicKernel.java:239)
>>>>
>>>> at
>>>>
org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:168)
>>>>
>>>> at
>>>>
com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:231)
>>>>
>>>> at
>>>> com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java
:238)
>>>> at
>>>>
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833)
>>>>
>>>> at
>>>>
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802)
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1423)
>>>>
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:96)
>>>>
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run
(RMIConnectionImpl.java:1260)
>>>>
>>>> at
>>>>
java.security.AccessController.doPrivileged(AccessController.java:275)
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1363)
>>>>
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java
:797)
>>>>
>>>> at
sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
>>>> at
>>>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java
:43)
>>>>
>>>> at java.lang.reflect.Method.invoke(Method.java:615)
>>>> at
>>>>
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:309)
>>>> at sun.rmi.transport.Transport$1.run(Transport.java:168)
>>>> at
>>>>
java.security.AccessController.doPrivileged(AccessController.java:275)
>>>> at
sun.rmi.transport.Transport.serviceCall(Transport.java:164)
>>>> at
>>>>
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:506)
>>>>
>>>> at
>>>>
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.handleRequest(TCPTransport.java:838)
>>>>
>>>> at
>>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run
(TCPTransport.java:912)
>>>>
>>>> at java.lang.Thread.run(Thread.java:799)
>>>> Caused by:
>>>> org.apache.geronimo.kernel.config.InvalidConfigException:
Unknown
>>>> start exception
>>>> at
>>>>
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:440)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:411)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.KernelConfigurationManager.start
(KernelConfigurationManager.java:187)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:527)
>>>>
>>>> ... 36 more
>>>> Caused by:
org.apache.geronimo.gbean.InvalidConfigurationException:
>>>> Configuration
>>>> france/FrancePolicyServerEar_FrancePolicyServer_WEB.war/1.0/car
>>>> failed to start due to the following reasons:
>>>> The service
>>>>
J2EEApplication=france/FrancePolicyServerEar/1.0/car,j2eeType=WebModule,name=FrancePolicyServer_WEB.war
>>>> did not start because the doStart method threw an exception.
>>>> java.lang.NullPointerException
>>>> at java.util.Hashtable.put(Hashtable.java:630)
>>>> at
>>>>
org.apache.naming.resources.DirContextURLStreamHandler.bind(DirContextURLStreamHandler.java:233)
>>>>
>>>> at
>>>> org.apache.geronimo.tomcat.TomcatWebAppContext.doStart
(TomcatWebAppContext.java:443)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:981)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:267)
>>>>
>>>> at
>>>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.start
(GBeanInstanceState.java:102)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:124)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:540)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean
(BasicKernel.java:379)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:374)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:411)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:187)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration
(SimpleConfigurationManager.java:527)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:508)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.invoke(<generated>)
>>>>
>>>> at
net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
>>>>
>>>> at
>>>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke
(GBeanInstance.java:852)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:338)
>>>> at
>>>>
org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(<generated>)
>>>>
>>>> at
net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java
:38)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
>>>>
>>>> at
>>>>
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:852)
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
>>>>
>>>> at
>>>>
org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:168)
>>>>
>>>> at
>>>>
com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:231)
>>>>
>>>> at
>>>>
com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:238)
>>>> at
>>>>
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833)
>>>>
>>>> at
>>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke
(JmxMBeanServer.java:802)
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1423)
>>>>
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:96)
>>>>
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run
(RMIConnectionImpl.java:1260)
>>>>
>>>> at
>>>>
java.security.AccessController.doPrivileged(AccessController.java:275)
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1363)
>>>>
>>>> at
>>>>
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java
:797)
>>>>
>>>> at
sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
>>>> at
>>>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java
:43)
>>>>
>>>> at java.lang.reflect.Method.invoke(Method.java:615)
>>>> at
>>>>
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:309)
>>>> at sun.rmi.transport.Transport$1.run(Transport.java:168)
>>>> at
>>>>
java.security.AccessController.doPrivileged(AccessController.java:275)
>>>> at
sun.rmi.transport.Transport.serviceCall(Transport.java:164)
>>>> at
>>>>
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:506)
>>>>
>>>> at
>>>>
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.handleRequest(TCPTransport.java:838)
>>>>
>>>> at
>>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run
(TCPTransport.java:912)
>>>>
>>>> at java.lang.Thread.run(Thread.java:799)
>>>>
>>>>
>>>> at
>>>>
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans
(ConfigurationUtil.java:403)
>>>>
>>>> ... 39 more
>>>> Error: Operation failed: start of
>>>> france/FrancePolicyServerEar/1.0/car failed
>>>>
>>>>
>>>> For completeness I will include the geronimo-application.xml and
>>>> openejb-jar.xml
>>>> geronimo-application.xml
>>>> -----------------------------------
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <application application-name="FrancePolicyServerEar"
>>>>
>>>> xmlns=" http://geronimo.apache.org/xml/ns/j2ee/application-1.1"
>>>>
>>>> xmlns:sec=" http://geronimo.apache.org/xml/ns/security-1.1"
>>>>
>>>> xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1 ">
>>>> <sys:environment>
>>>> <sys:moduleId>
>>>> <sys:groupId>france</sys:groupId>
>>>> <sys:artifactId>FrancePolicyServerEar</sys:artifactId>
>>>> <sys:version>1.0</sys:version>
>>>> <sys:type>car</sys:type>
>>>> </sys:moduleId>
>>>> <sys:dependencies>
>>>> <sys:dependency>
>>>> <sys:groupId>geronimo</sys:groupId>
>>>> <sys:artifactId>axis</sys:artifactId>
>>>> <sys:type>car</sys:type>
>>>> </sys:dependency>
>>>> </sys:dependencies>
>>>> <sys:hidden-classes/>
>>>> <sys:non-overridable-classes/>
>>>> </sys:environment>
>>>> </application>
>>>>
>>>> openejb-jar.xml
>>>> ---------------------
>>>> <openejb-jar xmlns="
http://www.openejb.org/xml/ns/openejb-jar-2.1">
>>>> <dep:environment
>>>> xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1
<http://geronimo.apache.org/xml/ns/deployment-1.1>">
>>>> <dep:moduleId>
>>>> <dep:groupId>qdfrancepolicy.</dep:groupId>
>>>> <dep:artifactId>FrancePolicyServverEjb</dep:artifactId>
>>>> <dep:version>1.0</dep:version>
>>>> <dep:type>car</dep:type>
>>>> </dep:moduleId>
>>>> <dep:dependencies>
>>>> <dep:dependency>
>>>> <dep:groupId>geronimo</dep:groupId>
>>>> <dep:artifactId>tomcat</dep:artifactId>
>>>> <dep:type>car</dep:type>
>>>> </dep:dependency>
>>>> </dep:dependencies>
>>>> <dep:hidden-classes/>
>>>> <dep:non-overridable-classes/>
>>>> </dep:environment>
>>>> <enterprise-beans>
>>>> <session>
>>>> <ejb-name>FrancePolicyServer</ejb-name>
>>>> <jndi-name>qdfrancepolicy.FrancePolicyHome </jndi-name>
>>>> </session>
>>>> </enterprise-beans>
>>>> </openejb-jar>
>>>>
>>>>
>>>> This ear includes a WAR which is merely a WebServiceRouter (ibm
>>>> class), EJB WebService Session Bean implementation, and some JARs
>>>> that the code depends upon.
>>>>
>>>> Note:
>>>>
>>>> The WAR router servlet is an IBM specific class that lives in
a jar
>>>> that is not in the ear as it is expected to be in the WAS system
>>>> and I assume available to all. I added this jar to the lib
>>>> directory under the geronimo install. I hope this is sufficient
>>>> for this if not I would like to know the best strategy for
>>>> deploying this jar preferrably outside the EAR.
>>>>
>>>> thanks
>>>>
>>>> Doug
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>