2012-12-17 96 views
0

我目前正在開發一個Web服務,在本地tomcat 7.0服務器上使用eclipse IDE和axis 2。部署axis2網絡服務時出現零頭異常

當我嘗試部署服務,我得到:

[ERROR] The encoSendInterface service, which is not valid, caused The following error occurred during schema generation: null org.apache.axis2.deployment.DeploymentException: The following error occurred during schema generation: null 
at org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:432) 
at org.apache.axis2.deployment.repository.util.ArchiveReader.buildServiceGroup(ArchiveReader.java:101) 
at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:178) 
at org.apache.axis2.deployment.ServiceDeployer.deploy(ServiceDeployer.java:82) 
at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:813) 
at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
at org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:142) 
at org.apache.axis2.deployment.WarBasedAxisConfigurator.loadServices(WarBasedAxisConfigurator.java:283) 
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:95) 
at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:584) 
at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:454) 
at org.apache.axis2.webapp.AxisAdminServlet.init(AxisAdminServlet.java:60) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
at java.lang.Thread.run(Thread.java:722) 
Caused by: org.apache.axis2.deployment.DeploymentException: The following error occurred during schema generation: null 
at org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:396) 
... 27 more 
Caused by: java.lang.NullPointerException 
at org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator.generateSchema(DefaultSchemaGenerator.java:606) 
at org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator.generateSchemaTypeforNameCommon(DefaultSchemaGenerator.java:1092) 
at org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator.generateSchemaForType(DefaultSchemaGenerator.java:996) 
at org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator.processMethods(DefaultSchemaGenerator.java:385) 
at org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator.generateSchema(DefaultSchemaGenerator.java:273) 
at org.apache.axis2.deployment.util.Utils.fillAxisService(Utils.java:468) 
at org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:388) 
... 27 more 
[INFO] org.apache.axis2.deployment.DeploymentException: The following error occurred during schema generation: null 

有什麼辦法找出來,是什麼原因導致這種異常?

我的WS的當前版本不讀任何配置文件。在構建Web服務時,是否有任何我不能使用的libriries,可能會導致整個演出崩潰?

問候, LuigiEd

+0

我已經解決了這個問題。其中一個W的公共方法有一個名稱完全類似於其中一個類屬性的參數。雖然這在常規(javaSE)開發中起作用,但它似乎在Web服務中造成麻煩。當我刪除參數時,服務器正確部署。任何人都可以向我解釋這種行爲嗎? – LuigiEdlCarno

回答

0

我已經解決了這個問題。其中一個W的公共方法有一個名稱完全類似於其中一個類屬性的參數。雖然這在常規(javaSE)開發中起作用,但它似乎在Web服務中造成麻煩。

2

如果這有助於任何人,我通過將@WebMethod(exclude = true)添加到我在服務類(用於依賴注入)上的一些setter解決了此問題。

根據JAX-WS Guide

如果未指定@WebMethod註釋,所有公共方法都 暴露包括從java.lang.Object繼承的方法 異常的繼承方法。 @WebMethod註釋的排除參數可用於控制公開的 的哪些方法。

0

從axis2 1.5.1升級到1.6.2後,我有相同(或非常相似)的問題。

將'@WebMethod(exclude = true)'添加到非webmethod公共方法爲我解決了它。