zoukankan      html  css  js  c++  java
  • 使用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:Tempapache-tomcat-7.0.30-windows-x86apache-tomcat-7.0.30webappsGServlet-0.0.1-SNAPSHOTWEB-INFclassesjserver.properties

    d.apache发布时日志文件记录路径设置为logs时,输出为apache-tomcat-7.0.30inlogs,log4j2.xml配置文件也放在apache-tomcat-7.0.30webappsGServlet-0.0.1-SNAPSHOTWEB-INFclasseslog4j2.xml

  • 相关阅读:
    剑指offer-最小的k个数
    剑指offer-数组中出现次数超过一半的数字
    android开发------响应用户事件
    android开发------初识Activity
    android开发------编写用户界面之相对布局
    android开发------编写用户界面之线性布局(补充知识)
    android开发------编写用户界面之线性布局
    android开发------第一个android程序
    加密狗的工作原理
    克隆加密狗、复制加密狗、破解加密狗的定义区别
  • 原文地址:https://www.cnblogs.com/GarfieldTom/p/3731737.html
Copyright © 2011-2022 走看看