2012-04-14 5 views
1

私は...のNetBeansを使用して2つの番号を追加するためのWebサービスを作成していると私は、次の応答Java Webサービスを使用して複雑なSOAP応答を取得するにはどうすればいいですか?

SOAP Response 

<?xml version="1.0" encoding="UTF-8"?> 
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:AddResponse xmlns:ns2="http://calculator.me.org/"> 
      <return>9</return> 
     </ns2:AddResponse> 
    </S:Body> 
</S:Envelope> 

富栄を取得しています、私は次のような構造のSOAP応答XMLを生成する必要があります。

<?xml version="1.0" encoding="UTF-8"?> 
<response> 
<CalculatedValue>9</CalculatedValue> 
<response> 

私のJavaコード:

import javax.jws.WebService; 
import javax.jws.WebMethod; 
import javax.jws.WebParam; 
import javax.ejb.Stateless; 

/** 
* 
* @author User 
*/ 
@WebService(serviceName = "CalculatorWS") 
@Stateless() 
public class CalculatorWS { 

    /** 
    * This is a sample web service operation 
    */ 
    @WebMethod(operationName = "hello") 
    public String hello(@WebParam(name = "name") String txt) { 
     return "<a>" + txt + "</a>"; 
    } 

    /** 
    * Web service operation 
    */ 
    @WebMethod(operationName = "Add") 
    public int Add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) { 
     //TODO write your implementation code here: 
     int k=i+j; 
     return k; 

    } 
} 

のwsdl:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.1.1-b09 (branches/2.1-6834; 2011-07-16T17:14:48+0000) JAXWS-RI/2.2.5-promoted-b04 JAXWS/2.2. --> 
<definitions targetNamespace="http://calculator.me.org/" name="CalculatorWS" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:tns="http://calculator.me.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <types> 
    <xsd:schema> 
     <xsd:import namespace="http://calculator.me.org/" schemaLocation="CalculatorWS_schema1.xsd"/> 
    </xsd:schema> 
    </types> 
    <message name="hello"> 
    <part name="parameters" element="tns:hello"/> 
    </message> 
    <message name="helloResponse"> 
    <part name="parameters" element="tns:helloResponse"/> 
    </message> 
    <message name="Add"> 
    <part name="parameters" element="tns:Add"/> 
    </message> 
    <message name="AddResponse"> 
    <part name="parameters" element="tns:AddResponse"/> 
    </message> 
    <portType name="CalculatorWS"> 
    <operation name="hello"> 
     <input wsam:Action="http://calculator.me.org/CalculatorWS/helloRequest" message="tns:hello"/> 
     <output wsam:Action="http://calculator.me.org/CalculatorWS/helloResponse" message="tns:helloResponse"/> 
    </operation> 
    <operation name="Add"> 
     <input wsam:Action="http://calculator.me.org/CalculatorWS/AddRequest" message="tns:Add"/> 
     <output wsam:Action="http://calculator.me.org/CalculatorWS/AddResponse" message="tns:AddResponse"/> 
    </operation> 
    </portType> 
    <binding name="CalculatorWSPortBinding" type="tns:CalculatorWS"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 
    <operation name="hello"> 
     <soap:operation soapAction=""/> 
     <input> 
     <soap:body use="literal"/> 
     </input> 
     <output> 
     <soap:body use="literal"/> 
     </output> 
    </operation> 
    <operation name="Add"> 
     <soap:operation soapAction=""/> 
     <input> 
     <soap:body use="literal"/> 
     </input> 
     <output> 
     <soap:body use="literal"/> 
     </output> 
    </operation> 
    </binding> 
    <service name="CalculatorWS"> 
    <port name="CalculatorWSPort" binding="tns:CalculatorWSPortBinding"> 
     <soap:address location="REPLACE_WITH_ACTUAL_URL"/> 
    </port> 
    </service> 
</definitions> 

私はこれについてたくさん検索しましたが、回答が得られませんでした。正しい答えがないstackoverflowで同様のポストが見つかりました。ウェブサービスを使用してその特定のSOAP応答を生成する方法は?

+0

MavenまたはAntを使用していますか? – Ilya

+0

WSのアタッチWSDL – Ilya

+0

user1143825:WSDLが添付されました –

答えて

2

投稿したような返信はできません。定義により、SOAP文書(またはメッセージ)はEnvelopeと少なくともBody要素を含んでいなければなりません。 SOAP specificationを参照してください。

操作スタイルをRPC(リモートプロシージャコール)またはドキュメント(プレーンXML)に指定することによって、Body要素の内容を制御することができます。

+0

このタイプのレスポンを少なくとも生成することは可能ですか?<?xml version = "1.0" encoding = "UTF-8"?> 9

+0

また、私はどのように私はそれを達成すると同じレベルにCalculatedValue \リターンで1つの以上の要素を追加したい場合は? –

+0

@soumitra chatterjee:メソッドから複数の値を返すことを意味しますか? – Tudor

関連する問題