2011-03-03 12 views
0

私はWebサービスを初めて利用しています。私はサンプルwsdl WebサービスをAxis2エンジンで実装しようとしています。スレッド "main"の例外org.apache.axis2.AxisFault:jdl.helloworld.webservices.service.HelloWorldSkeleton#SayHelloを実装してください

Versions: Axis2 - > axis2-1.1.1, Ant - > apache-ant-1.8.2 

ウェブサービスはエラーなしで作成されます。コマンドプロンプト(Antのテスト)を介してテストしていたときに

[java] Exception in thread "main" org.apache.axis2.AxisFault: Please implem 
ent jdl.helloworld.webservices.service.HelloWorldSkeleton#SayHello 
    [java]  at org.apache.axis2.description.OutInAxisOperationClient.send(Ou 
tInAxisOperation.java:271) 
    [java]  at org.apache.axis2.description.OutInAxisOperationClient.execute 
(OutInAxisOperation.java:202) 
    [java]  at jdl.helloworld.webservices.service.HelloWorldStub.SayHello(Un 
known Source) 
    [java]  at jdl.helloworld.webservices.client.Client.main(Unknown Source) 

    [java] Java Result: 1 

のようなエラーを取得していますこれは、JDLのの\ helloworldに\ Webサービス\サービスディレクトリ

package jdl.helloworld.webservices.service; 

import org.apache.ws.axis2.helloworld.SayHello; 
import org.apache.ws.axis2.helloworld.SayHelloResponse; 
import org.apache.ws.axis2.helloworld.PrintValues; 

public class HelloWorldServiceSkeleton 
{ 
    public org.apache.ws.axis2.helloworld.SayHelloResponse SayHello(org.apache.ws.axis2.helloworld.SayHello param0)throws Exception { 
     SayHelloResponse sayHelloResponse=new SayHelloResponse(); 
     try{ 

      sayHelloResponse.setName(param0.getName()); 
      System.out.println("Hello World Service called"); 
     }catch(Exception e){ 
      System.out.println(" Error Occured : "+e); 
     } 
     return sayHelloResponse; 
    } 

    public String PrintValues(org.apache.ws.axis2.helloworld.PrintValues param1){ 
     return "printvalues"; 
    } 

} 

Client.javaファイルの下HelloWorldServiceSkeleton.javaある

package jdl.helloworld.webservices.client; 

import org.apache.axis2.context.ConfigurationContext; 
import org.apache.axis2.context.ConfigurationContextFactory; 
import jdl.helloworld.webservices.service.HelloWorldStub; 
import jdl.helloworld.webservices.service.HelloWorldStub.SayHello; 
import jdl.helloworld.webservices.service.HelloWorldStub.SayHelloResponse; 
import jdl.helloworld.webservices.service.HelloWorldStub.PrintValues; 
import jdl.helloworld.webservices.service.HelloWorldStub.PrintValuesResponse; 

public class Client 
{ 
    public static void main(String[] args)throws Exception 
    {    
     System.out.println("-- Inside Client --"); 
     ConfigurationContext configurationContext=ConfigurationContextFactory.createConfigurationContextFromFileSystem("C:\\axis2-1.1.1\\repository", "C:\\axis2-1.1.1\\conf\\axis2.xml"); 
     HelloWorldStub helloWorldStub=new HelloWorldStub(configurationContext,"http://localhost:8080/axis2/services/HelloWorld"); 
     System.out.println(" --> sayHello Begin"); 
     SayHello sayHello=new SayHello(); 
     sayHello.setName("user");  
     SayHelloResponse sayHelloResponse=helloWorldStub.SayHello(sayHello);    
     System.out.println(" --> sayHello Response : "+sayHelloResponse.getName());   
    } 
} 

HelloWorld.wsdlファイル

<wsdl:definitions name="HelloWorld" 
    xmlns:tns="http://ws.apache.org/axis2/HelloWorld/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    targetNamespace="http://ws.apache.org/axis2/HelloWorld/"> 
    <wsdl:types> 
     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      elementFormDefault="qualified" 
      targetNamespace="http://ws.apache.org/axis2/HelloWorld/"> 
      <xsd:element name="SayHello"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element minOccurs="0" name="Name" type="xsd:string"/> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element>  
      <xsd:element name="SayHelloResponse"> 
       <xsd:complexType>   
        <xsd:sequence> 
         <xsd:element name="Name" minOccurs="0" type="xsd:string"/> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
      <xsd:element name="PrintValues"> 
       <xsd:complexType>   
        <xsd:sequence> 
         <xsd:element name="Name" minOccurs="0" type="xsd:string"/> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
      <xsd:element name="PrintValuesResponse"> 
       <xsd:complexType>   
        <xsd:sequence> 
         <xsd:element name="Name" minOccurs="0" type="xsd:string"/> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
     </xsd:schema> 
    </wsdl:types> 
    <wsdl:message name="SayHelloSoapIn"> 
     <wsdl:part name="parameters" element="tns:SayHello"/> 
    </wsdl:message> 
    <wsdl:message name="SayHelloSoapOut"> 
     <wsdl:part name="parameters" element="tns:SayHelloResponse"/> 
    </wsdl:message> 

    <wsdl:message name="PrintValuesSoapOut"> 
     <wsdl:part name="parameters" element="tns:PrintValues"/> 
    </wsdl:message> 
    <wsdl:message name="PrintValuesSoapOut"> 
     <wsdl:part name="parameters" element="tns:PrintValuesResponse"/> 
    </wsdl:message> 

    <wsdl:portType name="HelloWorldSoap"> 
     <wsdl:operation name="SayHello"> 
      <wsdl:input message="tns:SayHelloSoapIn"/> 
      <wsdl:output message="tns:SayHelloSoapOut"/> 
     </wsdl:operation> 
     <wsdl:operation name="PrintValues"> 
      <wsdl:input message="tns:PrintValuesSoapIn"/> 
      <wsdl:output message="tns:PrintValuesSoapOut"/> 
     </wsdl:operation> 
    </wsdl:portType> 
    <wsdl:binding name="HelloWorldSoap" type="tns:HelloWorldSoap"> 
     <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 
     <wsdl:operation name="SayHello"> 
      <soap:operation soapAction="http://localhost:8080/axis2/HelloWorld/SayHello" style="document"/> 
      <wsdl:input> 
       <soap:body use="literal"/> 
      </wsdl:input>   
      <wsdl:output> 
       <soap:body use="literal"/> 
      </wsdl:output> 
     </wsdl:operation> 

     <wsdl:operation name="PrintValues"> 
      <soap:operation soapAction="http://localhost:8080/axis2/HelloWorld/PrintValues" style="document"/> 
      <wsdl:input> 
       <soap:body use="literal"/> 
      </wsdl:input>   
      <wsdl:output> 
       <soap:body use="literal"/> 
      </wsdl:output> 
     </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="HelloWorld"> 
     <wsdl:port name="HelloWorldSoap" 
      binding="tns:HelloWorldSoap"> 
      <soap:address location="http://localhost:8080/axis2/services/HelloWorld" /> 
     </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 

私を助けてください。

答えて

0

WSDLからJavaクラスを生成するためにwsdl2javaを使用しましたか? wsdl2javaはスケルトン・サービス・クラスを生成し、スケルトン・クラスをサービス・クラスとして使用することを指示するservices.xmlファイルを生成します。自動的に生成されたスケルトンは、処理するWebサービス呼び出しに対して、そのメッセージとともにAxisFaultをスローします。 Axis2はサービスクラスではなく、このスケルトンクラスをサービスクラスとして使用しているようです。

通常、スケルトンクラスを拡張する(またはスケルトンインターフェイスを実装する)サービスクラスを作成します。サービスをパッケージ化するときは、自動的に生成されたスケルトンクラスではなく、サービスクラスとしてクラスを指定するようにservices.xmlファイルを変更する必要があります。

+0

Thanks kenster、 私はwsdl2javaファイルを使用していません。また、私は1日後に結果を得ました。 私は上記の例のような別の例を試してみました。私はここで私はHelloWorld.wsdlファイルで間違っていたと思う。 どうもありがとうございました。 – Mohan

関連する問題