CXF整合spring,在tomcat中發布webService
阿新 • • 發佈:2017-06-22
load loader print protect 分享 list factor 信息 ioe
1、首先下載CXF的jar包 http://pan.baidu.com/s/1dFBwSRf 密碼: qyax。裏面自帶了需要用到的spring的jar包
2、新建一個web項目,在這裏我給它命名為cxfweb
3、將下載的jar包導入lib下,並build
4、在src目錄下,新建兩個包。com.yxf.controller,com.yxf.serviceImpl。
5、在src目錄下,新建spring的配置文件。
<?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-4.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><bean id="loginServiceImpl" class="com.yxf.serviceImpl.LoginServiceImpl" /> <!-- address就是服務訪問的地址:http://localhost:8080/cxfweb/cxf/hello --> <jaxws:server address="/hello"> <jaxws:serviceBean>
[email protected] <ref bean="loginServiceImpl"/> </jaxws:serviceBean> </jaxws:server> </beans>
6、在com.yxf.contoller包下新建一個servlet,這裏我命名為LoginController。
7、在com.yxf.serviceImpl包下新建一個JOPO,這裏我命名為LoginServiceImpl。(為了簡單方便,這裏就不通過接口)
8、項目整體結構如下
9、配置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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>cxfweb</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>yxf</servlet-name> <servlet-class>com.yxf.controller.LoginController</servlet-class> </servlet> <servlet-mapping> <servlet-name>yxf</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
//這裏開始配置cxf。 <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> //項目啟動時啟動
<load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name>
//配置訪問路徑 <url-pattern>/cxf/*</url-pattern> </servlet-mapping> </web-app>
10、給先前建立的LoginServiceImpl類,[email protected](如果要對wsdl進行配置,這裏可以自行配置)
11、啟動tomcat。
12、輸入路徑:我的是http://localhost:8080/cxfweb/cxf/。可見如下界面即配置成功
註意:上面截圖時候spring的配置<jaxws:server address="/hello">路徑沒有帶/,變成了localhost:8080/cxfweb/cxfhello。正確配置應添加/,則路徑為cxfweb/cxf/hello。
wsdl地址應為:localhost:8080/cxfweb/cxf/hello?wsdl
下面也附上servlet和pojo裏的內容
package com.yxf.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.yxf.bean.User; import com.yxf.serviceImpl.LoginServiceImpl; /** * Servlet implementation class Login */ public class LoginController extends HttpServlet { private static final long serialVersionUID = 1L; private ApplicationContext context; private LoginServiceImpl loginServiceImpl; private volatile int count = 0; public LoginController() {} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("----------get---------------"); String username = request.getParameter("username"); String password = request.getParameter("password"); User u = new User(username,password, count+""); System.out.println(u.toString()); loginServiceImpl.login(u); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override public void init() throws ServletException { context = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); loginServiceImpl = (LoginServiceImpl)context.getBean("loginServiceImpl"); } }
package com.yxf.serviceImpl; import javax.jws.WebService; import com.yxf.bean.User; @WebService public class LoginServiceImpl { public LoginServiceImpl() { System.out.println("LoginServiceImpl is created"); } public void login(User user){ System.out.println("登錄信息:"); System.out.println("用戶ID--------------"+user.getId()); System.out.println("用戶帳號--------------"+user.getUsername()); System.out.println("用戶密碼--------------"+user.getPassword()); } }
CXF整合spring,在tomcat中發布webService