2012-06-25 32 views
11

Tôi đang tạo một WebService trong Java bằng cách sử dụng JAXWS RI. Tệp WSDL được tạo khi triển khai ứng dụng WAR tự động. Vấn đề là tôi muốn các đối số (mà mỗi hoạt động nhận được) trong tệp WSDL có tên đáng kể, nhưng chúng xuất hiện như arg0, arg1, arg2 ... Có cách nào để xác định tên cho tham số này và không không sử dụng tên mặc định?Tên tham số trong WSDL có tên quan trọng

tôi đã thực hiện như sau:

Giao diện WebService

@WebService 
@SOAPBinding(style = Style.RPC) 
public interface WS2 { 
    @WebMethod String confirmaXML(String lrt_id); 
} 

Các WebService Interface Thực hiện

@WebService(endpointInterface = "vital.tde.ws2.WS2") 
public class WS2Imp implements WS2{ 
    public String confirmaXML(String lrt_id) { 
     String respuesta = null; 
     //CODE 
     return respuesta; 
    } 

nắng jaxws.xml

<?xml version="1.0" encoding="UTF-8"?> 
<endpoints 
    xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" 
    version="2.0"> 
    <endpoint name="WS2" implementation="vital.tde.ws2.WS2Imp" url-pattern="/WS2" /> 
</endpoints> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <display-name>WS2</display-name> 
    <listener> 
    <listener-class> 
       com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
     </listener-class> 
    </listener> 
    <servlet> 
    <servlet-name>WS2</servlet-name> 
    <servlet-class> 
      com.sun.xml.ws.transport.http.servlet.WSServlet 
     </servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>WS2</servlet-name> 
    <url-pattern>/WS2</url-pattern> 
    </servlet-mapping> 
    <session-config> 
    <session-timeout>120</session-timeout> 
    </session-config> 
</web-app> 
+0

Bạn đang tự động tạo WSDL từ lớp dịch vụ web của mình? – Mac

+0

@Mac Có, tôi đã chỉnh sửa câu hỏi của mình để chỉ ra dựa trên những gì WSDL được tạo ra – user1084509

Trả lời

22

Nếu bạn đang tạo WSDL của bạn từ lớp dịch vụ web của bạn, bạn có thể thêm chú thích WebParam (xem here) với các tham số của các phương thức của bạn để thực thi việc đặt tên trong WSDL. Ví dụ:

@WebService 
public class FooService 
{ 
    @WebMethod(operationName = "barMethod") 
    public void bar (@WebParam(name = "bazArg") int baz) 
    { 
     ... 
    } 
} 

Đoạn mã trên cấu hình JAX-WS sử dụng tên "bazArg" cho tên thông số của phương thức trong WSDL.

+1

Cảm ơn bạn rất nhiều! Nó bây giờ hoạt động – user1084509

+1

Tuyệt vời! Mừng vì bạn đã giải quyết được điều đó. – Mac

Các vấn đề liên quan