標籤:style blog class code c java
首先感謝熔岩的文章:
http://lavasoft.blog.51cto.com/62575/227988
1.Eclipse安裝上tomcat外掛程式,http://www.eclipsetotale.com/tomcatPlugin.html下載後解壓者eclipse的plugin目錄
2.建立一個WebService:
package com.garfield.webservice;import javax.jws.WebService;/** * Java6開發的WebService服務端 * * @author leizhimin 2009-11-16 10:24:13 */ @WebService public class HelloWebservice { /** * Web服務中的業務方法 * * @return 一個字串 */ public String doSomething(String username) { return username + " is doing something!"; } }
3.在Eclipse中建立一個tomcat工程,建立一個Servlet:
package com.garfield.servlet;import java.io.IOException;import javax.servlet.GenericServlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.xml.ws.Endpoint;import com.garfield.webservice.HelloWebservice;/** * 發布Java6 WebService的Servlet, * * @author leizhimin 2009-11-16 13:52:49 */ public class WSServlet extends GenericServlet { @Override public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); System.out.println("準備啟動WebService服務:http://localhost:8888:8888/java6ws/Java6WS"); //發布一個WebService Endpoint.publish("http://localhost:8888/java6ws/Java6WS", new HelloWebservice()); System.out.println("已成功啟動WebService服務:http://localhost:8888:8888/java6ws/Java6WS"); } public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("此Servlet不處理任何商務邏輯,僅僅yonglai發布一個Web服務:http://localhost:8888:8888/java6ws/Java6WS"); } }
4.編輯web.xml:
<!DOCTYPE web-app PUBLIC ‘-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN‘ ‘http://java.sun.com/dtd/web-app_2_3.dtd‘><web-app> <servlet> <servlet-name>WSServlet</servlet-name> <servlet-class>com.garfield.servlet.WSServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>WSServlet</servlet-name> <url-pattern>/servlet/WSServlet</url-pattern> </servlet-mapping> </web-app>
這裡將服務發布的代碼寫在了Servlet的init()方法中,當Servlet載入時候,會自動執行init()裡面的方法。從而達到發布服務的目的,由於此Servlet不處理任何業務,因此,在Service裡面僅僅寫了一個提示性的語句。
5.啟動Tocmat,現在可以訪問這個服務了
6.訪問webservice:http://localhost:8888/java6ws/Java6WS?wsdl
7.幾個注意的問題:
a.如果在eclipse直接使用tomcat外掛程式部署發現停止tomcat後webservice仍然可以訪問,手工部署到tomcat後則可以通過tomcat的停止和啟動來控制。
b.通過eclipse的tomcat外掛程式打包成war,然後拷貝至tomcat的webapp目錄下發布,如果有更新,則需要刪除掉tomcat解包war自動產生的目錄及檔案。