Java6+Servlet+tomcat发布HelloWord

要求java6以上

模仿实例,遇见问题记录

1、eclipse建立Dynamic Web Project项目

2、编写webService服务

[java]  view plain  copy
 print ?
  1. package lavasoft.server;  
  2.   
  3. import javax.jws.WebService;  
  4. /** 
  5. * Java开发的WebService服务端 
  6. */  
  7. @WebService  
  8. public class JavaWebService {  
  9.         /** 
  10.          * Web服务中的业务方法 
  11.          * @return 一个字符串 
  12.          */  
  13. @WebMethod
  14.         public String doSomething(String username) {  
  15.                 return username + " hello!";  
  16.         }  
  17. @WebMethod
  18.         public String doHello() {  
  19.                 return "XFire hello!";  
  20.        }  
  21.  }  
3、开发发布服务的Servlet,为了通用性,最好选择GenericServlet来继承
[java]  view plain  copy
 print ?
  1. package lavasoft.servlet;  
  2.   
  3. import lavasoft.server.JavaWebService;  
  4. import javax.servlet.*;  
  5. import javax.xml.ws.Endpoint;  
  6. import java.io.IOException;  
  7.   
  8. /** 
  9. * 发布Java WebService的Servlet 
  10. */  
  11. public class WSServlet extends GenericServlet {  
  12.     private static final long serialVersionUID = 1L;  
  13.         @Override  
  14.         public void init(ServletConfig servletConfig) throws ServletException {  
  15.                 super.init(servletConfig);  
  16.                 System.out.println("准备启动WebService服务");  
  17.                 //发布一个WebService  
  18.                 Endpoint.publish("http://localhost:8888/javaws/JavaWebService"new JavaWebService());  
  19.                 System.out.println("已成功启动WebService服务");  
  20.         }  
  21.         public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {  
  22.                 System.out.println("此Servlet不处理任何业务逻辑,仅仅用来发布一个Web服务");  
  23.         }  
  24. }  
4、配置web.xml
[html]  view plain  copy
 print ?
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  3.                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.                  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  5.         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  6.                  version="2.5">  
  7.         <welcome-file-list>  
  8.                 <welcome-file>index.jspwelcome-file>  
  9.         welcome-file-list>  
  10.         <servlet>  
  11.                 <servlet-name>WSServletservlet-name>  
  12.                 <servlet-class>lavasoft.servlet.WSServletservlet-class>  
  13.                 <load-on-startup>1load-on-startup>  
  14.         servlet>  
  15.         <servlet-mapping>  
  16.                 <servlet-name>WSServletservlet-name>  
  17.                 <url-pattern>/servlet/WSServleturl-pattern>  
  18.         servlet-mapping>  
  19. web-app>  
注意:
1,这样写的目的是Servlet能伴随容器的启动在第一时间加载。以便服务能尽可能早的发布,否则,只有在第一次请求该Servlet的时候,才会被加载到容器。
web.xml配置与java文件所在包要一致
发布端口与tomcat端口最好不要重复
5、初始页index.jsp
[java]  view plain  copy
 print ?
  1. <%@ page language="java" contentType="text/html; charset=utf-8"%>  
  2. "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3.   
  4.       
  5.         展示  
  6.       
  7.       
  8.         
      
  9.         

    这是一个测试java WebService发布服务的例子

      
  10.         "http://localhost:8888/javaws/JavaWebService?wsdl">点此处访问WSDL  
  11.         
  
  •       
  •   
  • 6、启动Tocmat 浏览器中输入:http://localhost/JavaWebService/  成功访问即可

    (我的tomcat没有端口)

    7、客户端调用

    建立一个简单的空项目,一个类

    [java]  view plain  copy
     print ?
    1. import java.net.URL;  
    2. import org.codehaus.xfire.client.Client;  
    3.   
    4. public class XFireTest {  
    5.   
    6.     public static void main(String[] args) {  
    7.         try {  
    8.             Client c = new Client(new URL(  
    9.                     "http://localhost:8888/javaws/JavaWebService?wsdl"));  
    10.             Object[] results = c.invoke("doHello"new Object[0]);  
    11.             System.out.println(results.length);  
    12.             for (Object one : results) {  
    13.                 System.out.println("1 结果是:" + one);  
    14.             }  
    15.         } catch (Exception e) {  
    16.             e.printStackTrace();  
    17.         }  
    18.     }  
    19. }  
    运行看是否可以成功访问?  成功即可

    你可能感兴趣的:(Java,Tomcat,webservice)