2016-05-29 10 views
2

JBossは私が提供する.wsdlファイルをどのように使用しますか?今、それは自動生成します。このweb.xmlJBoss Server(WIldfly 10.0)で独自のWSDLファイルを使用

CalculatorWebService

package test.example.ws; 

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

@WebService 
public interface CalculatorWebService 
{ 
    @WebMethod 
    public double add(@WebParam(name="number")double ... number); 

    @WebMethod 
    public double subtract(@WebParam(name="number")double ... number); 

    @WebMethod 
    public double multiply(@WebParam(name="number")double ... number); 

    @WebMethod 
    public double divide(@WebParam(name="number")double ... number); 
} 

CalculatorWSImpl

package test.example.ws.impl; 

import javax.jws.WebService; 

import test.example.ws.CalculatorWebService; 

@WebService(endpointInterface = "test.example.ws.CalculatorWebService") 
public class CalculatorWSImpl implements CalculatorWebService 
{ 
    public double add(double ... number) { 
     if(number.length == 0) 
      return 0.0; 

     double sum = 0.0; 

     for(double num : number) 
      sum += num; 

     return sum; 
    } 

    public double subtract(double ... number) { 
     if(number.length == 0) 
      return 0.0; 

     double difference = number[0]; 

     for(int i = 1; i < number.length; i++) 
      difference -= number[i]; 

     return difference; 
    } 

    public double multiply(double ... number) { 
     if(number.length == 0) 
      return 0.0; 

     double product = 1.0; 

     for(double num : number) 
      product *= num; 

     return product; 
    } 

    public double divide(double ... number) { 
     if(number.length == 0) 
      return 0.0; 

     double quotient = number[0]; 

     for(int i = 1; i < number.length; i++) 
      quotient /= number[i]; 

     return quotient; 
    } 
} 

:私はこのインタフェースとクラスを持っている場合たとえば、

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 
    <display-name>WebServices</display-name> 
    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
    <servlet-name>calculatorWebService</servlet-name> 
    <servlet-class>test.example.ws.impl.CalculatorWSImpl</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>calculatorWebService</servlet-name> 
    <url-pattern>/ws/calculator</url-pattern> 
    </servlet-mapping> 
</web-app> 

Wildfly 10.0オートは、この.wsdlファイルを生成します。 :

<wsdl:definitions name="CalculatorWSImplService" targetNamespace="http://impl.ws.example.test/"><wsdl:import location="http://localhost:8080/WebServices/ws/calculator?wsdl=CalculatorWebService.wsdl" namespace="http://ws.example.test/"> 
    </wsdl:import><wsdl:binding name="CalculatorWSImplServiceSoapBinding" type="ns1:CalculatorWebService"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="add"><soap:operation soapAction="" style="document"/><wsdl:input name="add"><soap:body use="literal"/></wsdl:input><wsdl:output name="addResponse"><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="divide"><soap:operation soapAction="" style="document"/><wsdl:input name="divide"><soap:body use="literal"/></wsdl:input><wsdl:output name="divideResponse"><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="multiply"><soap:operation soapAction="" style="document"/><wsdl:input name="multiply"><soap:body use="literal"/></wsdl:input><wsdl:output name="multiplyResponse"><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="subtract"><soap:operation soapAction="" style="document"/><wsdl:input name="subtract"><soap:body use="literal"/></wsdl:input><wsdl:output name="subtractResponse"><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="CalculatorWSImplService"><wsdl:port binding="tns:CalculatorWSImplServiceSoapBinding" name="CalculatorWSImplPort"><soap:address location="http://localhost:8080/WebServices/ws/calculator"/></wsdl:port></wsdl:service></wsdl:definitions> 

私は自分自身で.wsdlファイルを作りたいと思います。 web.xmlに何かを追加する必要がありますか?これをどうやってやりますか?私がこれをしたい主な理由は、自分自身の.xsdもリンクできるからです。 JBossが自分自身で.wsdlを生成するのを止めるにはどうしたらいいですか?

私はグーグルを試みましたが、私は何かを見つけることができないので、私は正しいキーワードを探していないと思います。

答えて

1

それはかなり単純だった。あなたの実装クラスでは、というアトリビュートを@WebServiceアノテーションに追加するだけです。

だから私の例では、それは次のようになります。あなたはそれをこの方法を行う場合

@WebService (
    endpointInterface = "test.example.ws.CalculatorWebService", 
    wsdlLocation = "path/to/file.wsdl" 
) 

、あなたはserviceNameportNameを指定する必要があり、そしてtargetNamespace@WebService注釈の内側にも属性。これらの属性はすべて、.wsdlファイル内にある必要があります。

関連する問題