使用Servlet發布WebService


首先感謝熔岩的文章:

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自動生成的目錄及文件。

c.war發布時,根目錄下的配置文件放在解包后的classes目錄下,如E:\Temp\apache-tomcat-7.0.30-windows-x86\apache-tomcat-7.0.30\webapps\GServlet-0.0.1-SNAPSHOT\WEB-INF\classes\jserver.properties

d.apache發布時日志文件記錄路徑設置為logs\時,輸出為apache-tomcat-7.0.30\bin\logs,log4j2.xml配置文件也放在apache-tomcat-7.0.30\webapps\GServlet-0.0.1-SNAPSHOT\WEB-INF\classes\log4j2.xml


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM