0

Eclipse Juno、Maven、および java2wsdl プラグインを使用して、Apache Axis2 WebService をデプロイしようとしています。ただし、マッピングが原因であると思われる問題に遭遇し続けているため、誰かが私を正しい方向に向けることができれば幸いです。

パラメータを取り、カスタム オブジェクトを返す操作を WebService で呼び出そうとしていますが、これまでのところうまくいきません。

マイコード

話をするために、次のクラスがあります。

package com.example.models;
public class MyClass {
    // Does something
}

そして、次の操作で MyClass のリストを返します。

package com.example.service;
import com.example.models;
public class MyService {
    public List<MyClass> getExampleData(// a parameter) {  
        // Do something
        return aListOfMyClass;
    }
}

私のservices.xmlファイル:

<serviceGroup>
  <service name="MyWebService" targetNamespace="http://com.example.service.MyWebService/">
    <description>JNLPGenerator service</description>
    <schema schemaNamespace="http://com.example.service.MyWebService/" />
    <parameter name="ServiceClass" locked="false">com.example.service.MyWebService</parameter>
    <operation name="getExampleData">
      <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </operation>
  </service>
</serviceGroup>

エラー:

WebService をデプロイすると、クラス MyClass がマップされていないため、次のエラー メッセージが表示されます。

<Exception>org.apache.axis2.AxisFault: org.apache.axis2.AxisFault: Mapping qname not fond for the package: com.example.models
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:161)
    at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
    at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
    at org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:135)
    at org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:130)
    at org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:817)
    at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    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: java.lang.RuntimeException: org.apache.axis2.AxisFault: Mapping qname not fond for the package: com.example.models
    at org.apache.axis2.databinding.utils.BeanUtil.getPropertyQnameList(BeanUtil.java:261)
    at org.apache.axis2.databinding.utils.BeanUtil.getPullParser(BeanUtil.java:67)
    at org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl.processProperties(ADBXMLStreamReaderImpl.java:994)
    at org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl.next(ADBXMLStreamReaderImpl.java:831)
    at org.apache.axis2.util.StreamWrapper.next(StreamWrapper.java:71)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:672)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
    at org.apache.axiom.om.impl.llom.OMSerializableImpl.build(OMSerializableImpl.java:78)
    at org.apache.axiom.om.impl.llom.OMElementImpl.build(OMElementImpl.java:745)
    at org.apache.axiom.om.impl.llom.OMElementImpl.detach(OMElementImpl.java:723)
    at org.apache.axiom.om.impl.llom.OMNodeImpl.setParent(OMNodeImpl.java:105)
    at org.apache.axiom.om.impl.llom.OMElementImpl.addChild(OMElementImpl.java:297)
    at org.apache.axiom.om.impl.llom.OMElementImpl.addChild(OMElementImpl.java:213)
    at org.apache.axiom.soap.impl.llom.SOAPBodyImpl.addChild(SOAPBodyImpl.java:231)
    at org.apache.axis2.rpc.receivers.RPCUtil.processResponseAsDocLitWrapped(RPCUtil.java:422)
    at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:138)
    ... 25 more
Caused by: org.apache.axis2.AxisFault: Mapping qname not fond for the package: com.example.models
    at org.apache.axis2.databinding.utils.BeanUtil.getPropertyQnameList(BeanUtil.java:117)
    ... 40 more
</Exception>

だから私が知りたいのは、これを行う方法です。同様の投稿を読みましたが、正直なところ、問題を解決するためにこのマッピングをどこに追加する必要があるのか​​ 、まだよくわかりません。また、Web サービスのデプロイは問題なく、wsdl も問題なく生成されます。

長い投稿で申し訳ありませんが、誰かが私を助けてくれることを願っています..

4

1 に答える 1

2

この問題は、Java2WSDLがJavaコレクションを操作できないことが原因であるため、解決策は、Webサービスを操作するときにJavaコレクションを使用せず、代わりに配列を使用することです。

基本的に、Webサービスを機能させるために、次の変更を加えました。

package com.example.service;
import com.example.models;
public class MyService {
    public MyClass[] getExampleData(// a parameter) {  
        // Do something
        return myClassArray;
    }
}

JavaコレクションでのJava2WSDLの機能不全についての詳細が必要な場合は、Java Webサービス(IBM DeveloperWorksによるAxis2データ・バインディング)を参照してください。

于 2012-09-12T10:03:53.697 に答える