您好,登錄后才能下訂單哦!
我這里是實現有Spring+SpringMVC+Mybatis的項目,由于CXF能很好的集成到Spring容器中,所以對于已經使用Spring框架的項目推薦使用CXF框架來添加WebService服務
在項目中集成的步驟(服務端):
1:復制CXF的相關jar包。
2:在web.xml配置CXF的核心控制器:CXFServlet
3:開發一個WebService業務接口,該接口要使用@WebService修飾。
開發一個WebService實現類,實現類也需要用@WebService修飾。
4:在Spring配置文件中導入CXF提供Schema。我這里是重新寫了一個cxf-config.xml的配置文件方便分模塊和查找,開始進行配置使用jaxws:endpoint元素來暴露WebService。
5:如果要添加攔截器。在jaxws:endpoint元素添加inIntercepts或者outIntercept子元素
詳細操作如下:
1:復制CXF的相關jar包其中核心包6個
2:在web.xml配置CXF的核心控制器:CXFServlet
<servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/webservice/*</url-pattern> </servlet-mapping>
3:開發一個WebService業務接口,該接口要使用@WebService修飾。
開發一個WebService實現類,實現類也需要用@WebService修飾。
package log.controller; import javax.jws.WebService; import net.sf.json.JSONObject; @WebService public interface TestWebservice { public abstract void say(); public String login(String userName, String password); }
package log.controller; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.jws.WebService; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import dj.log.dao.EmployeeMapper; import dj.log.service.EmployeeService; import dj.log.service.LogService; @WebService(endpointInterface = "log.controller.TestWebservice", serviceName = "TestWebserviceImpl") public class TestWebserviceImpl implements TestWebservice { @Autowired private EmployeeService employeeService; @Autowired private EmployeeMapper employeeMapper; @Autowired private LogService logService; /* * (non-Javadoc) * * @see dj.log.controller.TestWebservice#say() */ @Override public void say() { System.out.println("dddddddddddddddddd"); } public String login(String userName, String password) { JSONObject json=new JSONObject(); List<Map<String, Object>> userInfo = logService.selectLogin(userName, password); String respMessage = "0"; if (userInfo.size() > 0) { respMessage = "1"; json.put("userName", userName); json.put("password", password); json.put("emp_id",userInfo.get(0).get("EMP_ID")); json.put("roles",userInfo.get(0).get("ROLES")); } json.put("respMessage", respMessage); // PrintWriter out = response.getWriter(); // out.print(json.toString()); // out.close(); return json.toString(); } }
4:在Spring配置文件中導入CXF提供Schema。我這里是重新寫了一個cxf-config.xml的配置文件方便分模塊和查找,開始進行配置使用jaxws:endpoint元素來暴露WebService:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <!-- 引用cxf包下的配置 --> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <!--聲明一個bean --> <bean id="testWebservice" class="controller.TestWebserviceImpl" /> <!-- 通過這個bean來暴露WebService implementor=""這個bean實現相關的業務邏輯:可以直接寫類的路徑, 也可以直接寫已經聲明的bean為了更好的使用Spring的依賴注入我們使用聲明好的bean address="/RCSWebService" 指定訪問的路徑 --> <jaxws:endpoint id="myWebService" implementor="#testWebservice" address="/RCSWebService" /> </beans>
在客戶端調用的步驟:
1:下載apache-cxf文件,并配置系統環境變量path路徑,我這里使用apache-cxf-2.7.6
2:調用cxf提供的wsdl2java工具,根據wsdl文檔生成相應的java代碼。
3:找到生成的類中一個繼承了Service的類。該類的實例可以當做工廠類來使用。通過調用的該類的getXXX獲得對象返回賦給一個代理類,通過代理類調用對應的方法
TestWebserviceImpl test = new TestWebserviceImpl(); TestWebservice testdao = test.getTestWebserviceImplPort(); testdao.say();
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。