Java 可用方法的NoSuchMethodException

Java 可用方法的NoSuchMethodException,java,jboss7.x,webservice-client,Java,Jboss7.x,Webservice Client,我正在为我的应用程序使用开放式KM应用程序框架。奇怪的是,有时我在代码中得到一个可用方法的NoSuchMethodException。一旦我开始得到这个异常,它就会一直重复,直到我重新启动服务器(Jboss7)。一旦重新启动,这个文件将一直工作到某个点,然后这个异常将再次发生并继续发生 有人能帮忙吗 我的异常跟踪 19:34:10,725 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/CAMS

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

有人能帮忙吗

我的异常跟踪

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,正如前面所说的,一旦出现,它就会一直出现,直到我重新启动服务器


任何帮助…

com.openkm.ws.client.document.document都是一个接口。我怀疑运行时部署中缺少实现。

您是否有可能使用Maven?不,我没有。。。构建是通过ant实现的。。我的战争中只有这个okm-ws.client.jar,我在使用CXF和JBoss时遇到了同样的问题。这看起来像是类加载器问题——在重新加载应用程序后发生(偶尔)。CXF JaxWsImplementorInfo使用org.apache.CXF.common.classloader.ClassLoaderUtils加载服务端点接口(seiClass)。这将使用当前线程的类加载器,例如MDB线程,它在应用程序之间保留。因此,似乎正在加载前面的类定义,这与当前服务接口不匹配(由于不同的类加载程序)。如果我找到了,我会发布解决方案。谢谢回复。让我检查一下com.openkm.ws.client.document.document实例中注入了什么,但是如果目标类具有指定签名权限的方法,那么Method类的getMethod()api应该是正常的?在检查实例实现时,CXF将服务端点接口(SEI)方法与实际的web服务实现进行比较,后者必须扩展SEI。因此,这里有一个接口(SEI)是完全可以的。仔细阅读问题——这只是偶尔发生的事!所以实现是存在的,但是比较有时失败。