|
I sent the below email last Friday. I would really appreciate even a confirmation of the issue.
Issue summary: I’m receiving a NameAlreadyBoundException after deploying 2 WARs, each containing at least 1 web service built using MUSE 1.0.
Probable cause: The Axis servlet requires several items to be included in the jndi-config.xml inside its WAR. Multiple WARs equals NameAlreadyBoundException.
Chad Sturtz Associate Consultant Gestalt, LLC
Office: 417.626.6521 Cell: 618.920.3437 Fax: 417.625.1810 From: Chad Sturtz
[mailto:[EMAIL PROTECTED]
My goal is for the client to be able to pick and choose where a web service is deployed. For this reason, I am creating one WAR for each service. When I tried deploying two WARs in the same AS that each contain one web service and were built using muse 1.0, a NameAlreadyBoundException was thrown. See the following partial stack trace:
Caused by: javax.naming.NameAlreadyBoundException at org.jnp.server.NamingServer.bind(NamingServer.java:144) at org.jnp.server.NamingServer.bind(NamingServer.java:109) at org.jnp.server.NamingServer.bind(NamingServer.java:109) at org.jnp.interfaces.NamingContext.bind(NamingContext.java:566) at org.jnp.interfaces.NamingContext.bind(NamingContext.java:531) at org.apache.ws.util.jndi.XmlBeanNamingContext.addResource(XmlBeanNamingContext.java:216) at org.apache.ws.util.jndi.XmlBeanJndiUtils.addGlobalElements(XmlBeanJndiUtils.java:488) at org.apache.ws.util.jndi.XmlBeanJndiUtils.parseJNDIConfig(XmlBeanJndiUtils.java:236) at org.apache.ws.util.jndi.XmlBeanJndiUtils.initFromInputStream(XmlBeanJndiUtils.java:175) at org.apache.ws.resource.webapp.WsrfServletContextListener.contextInitialized(WsrfServletContextListener.java:69)
As a potential solution, I attempted to deploy one (exploded) WAR as the un-touched webapps/muse directory and a second WAR (using muse-generated items, but built by maven) for a web service (built with muse) but with references to muse or axis related items removed from the server-config.wsdd, web.xml, and jndi-config.xml files. Removing all references to muse/axis from those files does still allow the WAR to deploy, but the axis-servlet has know knowledge of the web service. To try and correct this, I left the references to the axis-servlet in the web.xml and attempted to deploy again. This time, a NullPointerException was thrown. Please see the following partial stack trace:
Caused by: java.lang.NullPointerException at org.apache.ws.util.jndi.XmlBeanJndiUtils.setDefaultParameterValues(XmlBeanJndiUtils.java:251) at org.apache.ws.util.jndi.XmlBeanJndiUtils.getServiceArray(XmlBeanJndiUtils.java:419) at org.apache.ws.util.jndi.XmlBeanJndiUtils.addServiceElements(XmlBeanJndiUtils.java:505) at org.apache.ws.util.jndi.XmlBeanJndiUtils.parseJNDIConfig(XmlBeanJndiUtils.java:244) at org.apache.ws.util.jndi.XmlBeanJndiUtils.initFromInputStream(XmlBeanJndiUtils.java:175) at org.apache.ws.resource.webapp.WsrfServletContextListener.contextInitialized(WsrfServletContextListener.java:69)
I was able to fix this issue by adding the following back into the jndi-config.xml, which then produced the original NameAlreadyBoundException.
<resource name="DefaultParameters" type="org.apache.ws.util.jndi.DefaultParameters"> <resourceParams> <parameter> <name>factory</name> <value>org.apache.ws.util.jndi.BeanFactory</value> </parameter> <parameter> <name>resourceKeyClassName</name> <value>org.apache.ws.resource.impl.SimpleTypeResourceKey</value> </parameter> </resourceParams> </resource>
To summarize, it appears that muse is a singleton war. It requires certain items to be listed in the jndi-config.xml file for its war, and therefore when a second muse war is deployed, jndi problems occur.
Any relative feedback would be appreciated. Thanks!
Chad Sturtz Associate Consultant Gestalt, LLC
Office: 417.626.6521 Cell: 618.920.3437 Fax: 417.625.1810
Chad Sturtz Associate Consultant Gestalt, LLC
Office: 417.626.6521 Cell: 618.920.3437 Fax: 417.625.1810
|
