WebSphere web.xml / bindings issue

jwmajors81 picture jwmajors81 · Jul 18, 2010 · Viewed 30.4k times · Source

I just recently started having issues while deploying EARS within websphere. The error I get after I install the apps is provided below.

------Start of DE processing------ = [7/18/10 10:51:19:309 CDT] , key = javax.management.MBeanException com.ibm.ws.management.AdminServiceImpl.invoke 679
Exception = javax.management.MBeanException
Source = com.ibm.ws.management.AdminServiceImpl.invoke
probeid = 679
Stack Dump = javax.management.MBeanException: Exception thrown in RequiredModelMBean while trying to invoke operation startApplication
    at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1119)
at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:973)
...
...
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
Caused by: com.ibm.ws.exception.RuntimeError: java.lang.RuntimeException: java.lang.NullPointerException
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:955)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$1.run(ApplicationMgrImpl.java:1437)
at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:4191)
at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:4289)
at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:245)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:1442)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
...
...
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:271)
at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1092)
... 64 more
Caused by: java.lang.RuntimeException: java.lang.NullPointerException
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:884)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:921)
... 79 more
Caused by: java.lang.NullPointerException
at com.ibm.ws.wswebcontainer.webapp.WebAppConfigurationHelper.constructServletMappings(WebAppConfigurationHelper.java:406)
at com.ibm.ws.wswebcontainer.webapp.WebAppConfigurationHelper.createConfiguration(WebAppConfigurationHelper.java:148)
at com.ibm.ws.webcontainer.metadata.WebMetaDataFactory.createMetaData(WebMetaDataFactory.java:180)
at com.ibm.ws.runtime.component.MetaDataMgrImpl.createMetaDataFromFactories(MetaDataMgrImpl.java:172)
at com.ibm.ws.runtime.component.MetaDataMgrImpl.createMetaData(MetaDataMgrImpl.java:306)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:581)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:834)
... 80 more

Dump of callerThis = 
Object type = com.ibm.ws.management.AdminServiceImpl$1
com.ibm.ws.management.AdminServiceImpl$1@60726072
parm[0] =     WebSphere:name=ApplicationManager,process=server1,platform=proxy,node=cc503216Node02,version=6.1.0.29,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=cc503216Node02Cell,spec=1.0
==> Performing default dump from com.ibm.ws.management.dm.JmxDM  = Sun Jul 18 10:51:19 CDT 2010
Dump of callerThis = 
Object type = com.ibm.ws.management.AdminServiceImpl$1
val$origName = 
oldSerialVersionUID = -5467795090068647408
newSerialVersionUID = 1081892073854801359
oldSerialPersistentFields = [Ljava.io.ObjectStreamField;@7b127b12
newSerialPersistentFields = {}
serialVersionUID = 1081892073854801359
serialPersistentFields = this.val$origName.newSerialPersistentFields
compat = false
_Empty_property_array = {}
_EmptyPropertyList = java.util.Hashtable@7e287e28
_canonicalName = WebSphere:cell=cc503216Node02Cell,mbeanIdentifier=ApplicationManager,name=ApplicationManager,node=cc503216Node02,platform=proxy,process=server1,spec=1.0,type=ApplicationManager,version=6.1.0.29
_kp_array = [Ljavax.management.ObjectName$Property;@57a257a2
_ca_array = [Ljavax.management.ObjectName$Property;@57be57be
_domain_length = 9
_propertyList = java.util.Hashtable@60846084
_domain_pattern = false
_property_pattern = false
val$operationName = startApplication
val$params = 
[0] = CommercialWSIntegration
val$signature = 
[0] = java.lang.String
  this$0 = com.ibm.ws.management.AdminServiceImpl@9bc09bc

+Data for directive [defaultjmx] obtained. = 
==> Dump complete for com.ibm.ws.management.dm.JmxDM  = Sun Jul 18 10:51:19 CDT 2010

I believe this has something to do with the resource bindings within the web.xml, but I'm not sure. I have not created the ibm proprietary binding files and included those in the EAR, but rather am expecting that to be done as part of the deployment process. In order to accomplish that I have tried telling it to generate new bindings while overwriting the existing ones, and other combination of bindings settings, but I always seem to get the error above. I have provided my web.xml below. Can you identify anything that looks wrong? I have tried removing the id attribute for the resource-ref elements, but that didn't seem to help.

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>
    CommercialWSIntegrationWARProject
</display-name>
<context-param>
    <param-name>
        log4jConfigLocation
    </param-name>
    <param-value>
        /WEB-INF/log4j.xml
    </param-value>
</context-param>


<!-- Reads request input using UTF-8 encoding -->
<filter>
    <filter-name>
        characterEncodingFilter
    </filter-name>
    <filter-class>
        org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
        <param-name>
            encoding
        </param-name>
        <param-value>
            UTF-8
        </param-value>
    </init-param>
    <init-param>
        <param-name>
            forceEncoding
        </param-name>
        <param-value>
            true
        </param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>
        characterEncodingFilter
    </filter-name>
    <url-pattern>
        /*
    </url-pattern>
</filter-mapping>

<listener>
    <listener-class>
        org.springframework.web.util.Log4jConfigListener
    </listener-class>
</listener>

<servlet>
    <description>
    </description>
    <display-name>
        CommercialPDInitServlett
    </display-name>
    <servlet-name>
        CommercialPDInitServlett
    </servlet-name>
    <servlet-class>
        com.inscompany.cqp.integration.CommercialPDInitServlett
    </servlet-class>
    <load-on-startup>
        -1
    </load-on-startup>
</servlet>

<servlet>
    <servlet-name>
        Spring MVC Dispatcher Servlet
    </servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>
            contextConfigLocation
        </param-name>
        <param-value>
            /WEB-INF/spring/app-config.xml
        </param-value>
    </init-param>
    <load-on-startup>
        1
    </load-on-startup>
</servlet>


<servlet-mapping>
    <servlet-name>
        default
    </servlet-name>
    <url-pattern>
        /css/*.css
    </url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>
        default
    </servlet-name>
    <url-pattern>
        /js/*.js
    </url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>
        CommercialPDInitServlett
    </servlet-name>
    <url-pattern>
        /Initialize
    </url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>
        Spring MVC Dispatcher Servlet
    </servlet-name>
    <url-pattern>
        /rest/*
    </url-pattern>
</servlet-mapping>

<resource-ref id="ResourceRef_1191955667160">
    <description>
    </description>
    <res-ref-name>
        url/pdProps
    </res-ref-name>
    <res-type>
        java.net.URL
    </res-type>
    <res-auth>
        Container
    </res-auth>
    <res-sharing-scope>
        Shareable
    </res-sharing-scope>
    <mapped-name>url/pdProps</mapped-name>
</resource-ref>

<resource-ref id="ResourceRef_1191957500691">
    <description>
    </description>
    <res-ref-name>
        jdbc/CCDB2
    </res-ref-name>
    <res-type>
        javax.sql.DataSource
    </res-type>
    <res-auth>
        Container
    </res-auth>
    <res-sharing-scope>
        Shareable
    </res-sharing-scope>
    <mapped-name>jdbc/CCDB2</mapped-name>
</resource-ref>
<resource-ref id="ResourceRef_1271699412761">
    <description>
    </description>
    <res-ref-name>
        jms/QMGR
    </res-ref-name>
    <res-type>
        javax.jms.ConnectionFactory
    </res-type>
    <res-auth>
        Container
    </res-auth>
    <res-sharing-scope>
        Shareable
    </res-sharing-scope>
    <mapped-name>jms/QMGR</mapped-name>
</resource-ref>
<resource-ref id="ResourceRef_1271699443228">
    <description>
    </description>
    <res-ref-name>
        jms/SVC.MDB.APP
    </res-ref-name>
    <res-type>
        javax.jms.Queue
    </res-type>
    <res-auth>
        Container
    </res-auth>
    <res-sharing-scope>
        Shareable
    </res-sharing-scope>
    <mapped-name>jms/SVC.MDB.APP</mapped-name>
</resource-ref> 
</web-app>

Thank you very much for your assistance. Jeremy

Answer

jwmajors81 picture jwmajors81 · Jul 28, 2010

The problem was caused by having two different servlets with the same name. Once I took out the items provided below I was able to start the application successfully again.

<servlet-mapping> 
  <servlet-name> 
    default 
  </servlet-name> 
  <url-pattern> 
    /css/*.css 
  </url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
  <servlet-name> 
    default 
  </servlet-name> 
  <url-pattern> 
    /js/*.js 
  </url-pattern> 
</servlet-mapping> 

I hope this helps others out.