WebSphere web.xml / bindings问题

时间:2010-07-18 17:22:00

标签: java-ee websphere websphere-6.1

我刚刚在websphere中部署EARS时遇到了问题。我在安装应用程序后遇到的错误如下所示。

------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

我认为这与web.xml中的资源绑定有关,但我不确定。我没有创建ibm专有绑定文件并将其包含在EAR中,而是期望在部署过程中完成。为了实现这一点,我试图告诉它在覆盖现有绑定时生成新绑定,以及绑定设置的其他组合,但我似乎总是得到上面的错误。我在下面提供了我的web.xml。你能找出出错的东西吗?我已经尝试删除resource-ref元素的id属性,但这似乎没有帮助。

<?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>

非常感谢你的帮助。 杰里米

2 个答案:

答案 0 :(得分:10)

问题是由两个具有相同名称的不同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> 

我希望这有助于其他人。

答案 1 :(得分:0)

检查您是否要安装与WAS中已安装的相同的耳朵(名称不同)。

我在上述问题上也遇到了类似的例外情况