2013-01-22 105 views
3

我正在为我的应用程序使用开放式KM应用程序框架。很奇怪的是,有时我在我的代码中得到NoSuchMethodException可用的方法。一旦我开始得到这个异常,那么它会一直重复,直到我重新启动服务器(Jboss7)。一旦重新启动,这将工作文件,直到某一点,然后再次发生这种异常会发生并继续发生。NoSuchMethodException可用方法

任何人都可以帮忙吗?

我的异常跟踪

19:34:10,725 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/CAMSWeb].[spring]] (http--192.168.1.62-8080-2) Servlet.service() for servlet spring threw exception: java.lang.NoSuchMethodException: com.openkm.ws.client.document.OKMDocument.create(java.lang.String, com.openkm.ws.client.document.Document, [B) 
    at java.lang.Class.getMethod(Class.java:1622) [:1.7.0_09] 
    at org.apache.cxf.jaxws.JAXWSMethodDispatcher.getImplementationMethod(JAXWSMethodDispatcher.java:109) 
    at org.apache.cxf.jaxws.JAXWSMethodDispatcher.bind(JAXWSMethodDispatcher.java:55) 
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.bindOperation(JaxWsServiceFactoryBean.java:280) 
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.initializeWSDLOperation(JaxWsServiceFactoryBean.java:254) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeWSDLOperations(ReflectionServiceFactoryBean.java:645) 
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.initializeWSDLOperations(JaxWsServiceFactoryBean.java:289) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:392) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:499) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:241) 
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202) 
    at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101) 
    at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90) 
    at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:152) 
    at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142) 
    at org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:464) 
    at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:331) 
    at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:318) 
    at javax.xml.ws.Service.getPort(Service.java:99) [jboss-jaxws-api_2.2_spec-2.0.0.Final.jar:2.0.0.Final] 
    at com.openkm.ws.client.document.OKMDocument_Service.getOKMDocumentPort(OKMDocument_Service.java:72) [okm-ws-client-6.0.jar:] 

我已经把一些其他的痕迹也知道什么是调用的类和方法预期。这些都是结果

19:34:10,719 INFO [stdout] (http--192.168.1.62-8080-2) Trying to fetch method ========  create from class : interface com.openkm.ws.client.document.OKMDocument 
19:34:10,719 INFO [stdout] (http--192.168.1.62-8080-2) Length of the method name ======== 6 
19:34:10,719 INFO [stdout] (http--192.168.1.62-8080-2) The parameters for the expected method are 
19:34:10,719 INFO [stdout] (http--192.168.1.62-8080-2) >>>>>>>>>.... java.lang.String 
19:34:10,719 INFO [stdout] (http--192.168.1.62-8080-2) >>>>>>>>>.... com.openkm.ws.client.document.Document 
19:34:10,719 INFO [stdout] (http--192.168.1.62-8080-2) >>>>>>>>>.... [B 

这的结果getMethods从调用的方法端点类

19:34:10,721 INFO [stdout] (http--192.168.1.62-8080-2) Method Name :: create 
19:34:10,721 INFO [stdout] (http--192.168.1.62-8080-2) Parameters.... java.lang.String 
19:34:10,721 INFO [stdout] (http--192.168.1.62-8080-2) Parameters.... com.openkm.ws.client.document.Document 
19:34:10,721 INFO [stdout] (http--192.168.1.62-8080-2) Parameters.... [B 

正如我们所看到的调用签名是

create(String, com.openkm.ws.client.document.Document, byteArray) 

和目标类也有相同签名的方法,但仍处于次我得到这个NoSucnMethodException和说,一旦它来了,然后它让未来永远,直到我重新启动服务器。

任何帮助......

+0

你是否在使用Maven? –

+0

没有即时通讯不... ...通过蚂蚁建立..我只是有这个okm-ws.client.jar在我的战争 –

+0

我遇到与CXF和JBoss相同的问题。它看起来像一个类加载器问题 - 发生在重新加载应用程序(偶尔)之后。 CXF JaxWsImplementorInfo使用org.apache.cxf.common.classloader.ClassLoaderUtils加载服务端点接口(seiClass)。这使用当前线程的类加载器,例如,保留在应用程序之间的MDB线程。因此,前面的类定义可能会被加载,这与当前的服务接口不匹配(由于不同的类加载器)。如果我找到解决方案,我会发布解决方案。 – wbdarby

回答

0

com.openkm.ws.client.document.Document接口。我怀疑运行时部署中缺少了实现。

+0

感谢您的回应。让我检查com.openkm.ws.client.document.Document实例中注入的内容,但如果目标类具有指定签名权限的方法,则Method类的getMethod()api应该可以吗?他将检查实例实施 –

+0

此时,CXF将服务端点接口(SEI)方法与实际的Web服务实现进行比较,该实现必须扩展SEI。因此,这里有一个接口(SEI)是完全正确的。仔细阅读这个问题 - 这只是偶尔发生的!所以实现在那里,但有时比较失败。 – jonashackt

相关问题