在S2SH中使用CXF添加WebService

最近學弟學妹讓我幫忙在他們的S2SH項目中添加遠程調用接口,我使用CXF添加WebService,提高遠程接口。

主要有以下個步驟:

步驟一:下載jar包:

geronimo-annotation_1.0_spec-1.1.1.jar
geronimo-jaxws_2.2_spec-1.0.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.3.jar
jaxb-api-2.2.1.jar
jaxb-impl-2.2.1.1.jar
neethi-2.0.4.jar
wsdl4j-1.6.2.jar
XmlSchema-1.4.7.jar
wstx-asl-3.2.9.jar

這些jar直接去apach官網下載cxf的壓縮包,都能夠下載。

步驟二:配置Web.xml 

<servlet>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/webServices/*</url-pattern>
  </servlet-mapping>

其中  /WebService/* 是接口的訪問地址格式。

步驟三:Spring容器的配置

        在spring的配置上添加上圖所標註的。

步驟四: 開始寫接口:





注意標誌的位置。

步驟五: 接口寫完。最後需要在spring的配置文件上註冊接口,讓spring管理。

到這裏爲止,已經接口已經寫完。啓動項目,然後在瀏覽器地址輸入



通過地址欄 查看接口是否暴露。

到這裏爲止S2SH項目使用CXF配置WebService 已經完成。


最後配上使用AXIS調用webService接口demo。同樣AXIS的jar可以在apach的官網下載。


package Test.Test;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;


import org.apache.axis.client.Service;


import com.alibaba.fastjson.JSON;


import Test.domain.User;


public class TestClient {

public static void main(String[] args) {

//指出service的URL
String endpoint="http://localhost:8080/Struts2.3.16.1Hibernate4.3.4Spring4.0.2/webServices/LoginService";

//映射  固定不變
String nameSpace="http://webservice.internsystem.sise.com/";

//創建一個Service 用戶調用CALL方法
Service service=new Service();

try {
Call call=service.createCall();
call.setTargetEndpointAddress(endpoint);

//調用的接口名稱 Login
call.setOperationName(new QName(nameSpace,"Login"));

//調用接口 傳遞的參數
call.addParameter("UserJson", org.apache.axis.Constants.XSD_STRING, ParameterMode.IN);
// new 一個實體類
User user=new User();
user.setName("admin");
user.setPwd("123456");
user.setRole("admin");

//將對象轉換爲String類型字符串
String aa=JSON.toJSONString(user);

//調用接口返回的參數
String result=(String) call.invoke(new Object[]{aa});

User user2=new User();
user2=JSON.parseObject(result, User.class);
System.out.println(result);
// System.out.println(user2.toString());

} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}


}


}

成爲菜鳥路上的笨鳥~























發佈了31 篇原創文章 · 獲贊 12 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章