2010-07-18 115 views
4

我剛剛在websphere內部部署EARS時遇到了問題。下面提供了安裝應用程序後出現的錯誤。WebSphere web.xml/bindings問題

------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 
[email protected] 
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 = [email protected] 
_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 = [email protected] 
_domain_pattern = false 
_property_pattern = false 
val$operationName = startApplication 
val$params = 
[0] = CommercialWSIntegration 
val$signature = 
[0] = java.lang.String 
    this$0 = [email protected] 

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

非常感謝您的協助。 Jeremy

+0

也許你有一些不好的配置(?),但NPE不應該來自服務器代碼。我會說這看起來像一張支持票。 – Rick 2010-07-19 14:32:07

回答

8

問題是由於有兩個不同的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> 

我希望這可以幫助別人。

+13

你會期望如此昂貴的應用服務器爲這樣的事情提供某種警告信息,對嗎? Isaac 2012-10-08 10:08:27