O2OA(翱途) o2server 調用 webServices jaxws 樣例

本文分兩部分介紹如何在 o2server 服務器中調用 webServices(jaxws)服務.

第一部分介紹如何在tomcat上搭建一個webServices(jaxws)服務.

第二部分介紹如何在o2server服務器上來調用上面創建的服務.

O2OA(翱途)官網:http://www.o2oa.net

在tomcat上搭建一個webServices服務

介紹如何編寫託管在 Apache Tomcat 服務器上運行的 Java XML Web 服務 (JAX-WS) 的 Java Web 應用程序.本教程重點介紹使客戶端能夠訪問部署在 Tomcat 上的 Web 服務的項目配置.

  • 添加 JAX-WS 運行時依賴關係

請將以下依賴項添加到項目的 pom.xml 文件中:

    <dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.3.2</version>
    </dependency>

 

  • 創建一個簡單的 XML/SOAP Web 服務

創建一個簡單的 Java XML Web 服務類,如下所示:

package net.o2oa.scratch.tomcat9.jaxws;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebServicepublic class JaxwsEcho {    
@WebMethod
    @SOAPBinding(style = Style.DOCUMENT)
    public String sayHello(String name) {        
    return "Hello, " + name + "!";
    }
}

 

 

配置 webServices 服務點

<?xml version="1.0" encoding="UTF-8"?><endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
  <endpoint
     name="JaxwsEcho"
     implementation="net.o2oa.scratch.tomcat9.jaxws.JaxwsEcho"
     url-pattern="/ws/echo"/>
  </endpoints>

 

  • 配置 JAX-WS 偵聽器和 Servlet

將以下 XML 代碼添加到 Web 部署描述符文件 (web.xml):

    <listener>
    <listener-class>
        com.sun.xml.ws.transport.http.servlet.WSServletContextListener    
    </listener-class></listener>
    <servlet>
    <servlet-name>JAXWSServlet</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>JAXWSServlet</servlet-name>
    <url-pattern>/ws/*</url-pattern>
    </servlet-mapping>

 


 
  • 查看接口

將以上程序進行打包,打包成scratch_tomcat9.war. 然後將文件複製到Tomcat9的webapps目錄下,啓動tomcat. 訪問http://127.0.0.1:8080/sctatch_tomcat9/ws/echo,可以看到:

port.png

o2server調用webServices(jaxws)

在流程中的"服務調用"活動中調用webService(jaxws)

invoke.png

填入以下參數

WSDL地址:

http://127.0.0.1:8080/scratch_tomcat9/ws/echo?wsdl

 

調用方法:

sayHello

 

參數腳本:
this.parameters.add("O2OA");

響應腳本:
var txt = "webServices響應:";print(txt + this.response.get()[0]);
這樣我們就完成了調用外部webServices(jaxws)的配置.

     流程運行至服務調用活動後服務端可以看到輸出日誌:

invoke_response.png

這樣就正確的調用到了webServices(jaxws).

在腳本中調用soap(jaxws)方法訪問webServices(jaxws)

我們同樣可以在腳本中調用webServices(jaxws)服務,系統已經注入了服務對象以方便webServices(jaxws)調用.

在事件中通過調用this.services()對象可以獲得調用webServices(jaxws)的封裝對象.

scirpt_soap.png

var ObjectArray = Java.type("java.lang.Object[]");
var param = new ObjectArray(1);
param[0] = "O2OA";
var resp = this.service.soap("http://127.0.0.1:8080/scratch_tomcat9/ws/echo?wsdl", "sayHello", param);print("soap響應:" + resp[0])

 

流程運行至腳本所在的事件後可以看到輸出日誌:

soap_response.png

這樣就正確的調用到了webServices(jaxws).

在服務中soap和jaxws這兩個方法是等價的.

如果對方的webServices需要一些額外的數據纔可以訪問,比如需要認證信息,那麼可以調用帶請求頭參數的方法進行訪問.

在腳本中通過發送xml直接調用webServices(jaxws)

特殊使用場景下也可以直接發送xml的方式來調用webServices(jaxws).

soapXml.png

 

var xml ="<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:jax="http://jaxws.tomcat9.scratch.o2oa.net/">";
xml += "<soapenv:Header/>";
xml += "<soapenv:Body>";
xml += "<jax:sayHello>";
xml += "<arg0>張三</arg0>";
xml += "</jax:sayHello>";
xml += "</soapenv:Body>";
xml += "</soapenv:Envelope>";
var resp = this.service.soapXml("http://127.0.0.1:8080/scratch_tomcat9/ws/echo?wsdl", xml);
print("soap xml 響應:" + resp[0]);

 

直接向服務地址發送xml報文調用服務:

soapXml_response.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章