webService入门实例

来源:互联网 发布:ll 和 优先级 c语言 编辑:程序博客网 时间:2024/05/19 00:39
 

1、   服务器端

1.1、创建一个Web工程WS_Test

1.2、把axis相关jar包考入工程的lib文件夹下(jar包见附件)

1.3、配置web.xml,内容如下

 

<?xml version="1.0" encoding="UTF-8"?>

<!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>

  <display-name>Apache-Axis</display-name>

   

    <listener>

        <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>

    </listener>

   

  <servlet>

    <servlet-name>AxisServlet</servlet-name>

    <display-name>Apache-Axis Servlet</display-name>

    <servlet-class>

        org.apache.axis.transport.http.AxisServlet

    </servlet-class>

  </servlet>

 

  <servlet>

    <servlet-name>AdminServlet</servlet-name>

    <display-name>Axis Admin Servlet</display-name>

    <servlet-class>

        org.apache.axis.transport.http.AdminServlet

    </servlet-class>

    <load-on-startup>100</load-on-startup>

  </servlet>

 

  <servlet>

    <servlet-name>SOAPMonitorService</servlet-name>

    <display-name>SOAPMonitorService</display-name>

    <servlet-class>

        org.apache.axis.monitor.SOAPMonitorService

    </servlet-class>

    <init-param>

      <param-name>SOAPMonitorPort</param-name>

      <param-value>5001</param-value>

    </init-param>

    <load-on-startup>100</load-on-startup>

  </servlet>

 

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name>

    <url-pattern>/servlet/AxisServlet</url-pattern>

  </servlet-mapping>

 

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name>

    <url-pattern>*.jws</url-pattern>

  </servlet-mapping>

 

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name>

    <url-pattern>/services/*</url-pattern>

  </servlet-mapping>

 

  <servlet-mapping>

    <servlet-name>SOAPMonitorService</servlet-name>

    <url-pattern>/SOAPMonitor</url-pattern>

  </servlet-mapping>

 

 <!-- uncomment this if you want the admin servlet -->

 <!--

  <servlet-mapping>

    <servlet-name>AdminServlet</servlet-name>

    <url-pattern>/servlet/AdminServlet</url-pattern>

  </servlet-mapping>

 -->

 

    <session-config>

        <!-- Default to 5 minute session timeouts -->

        <session-timeout>5</session-timeout>

    </session-config>

 

    <!-- currently the W3C havent settled on a media type for WSDL;

    http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft

    for now we go with the basic 'it's XML' response -->

  <mime-mapping>

    <extension>wsdl</extension>

     <mime-type>text/xml</mime-type>

  </mime-mapping>

 

 

  <mime-mapping>

    <extension>xsd</extension>

    <mime-type>text/xml</mime-type>

  </mime-mapping>

 

  <welcome-file-list id="WelcomeFileList">

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.jws</welcome-file>

  </welcome-file-list>

 

</web-app>

 

 

1.4、在src下创建对外提供调用的servicetest_1.Ws_1.java

内容如下:

package test_1;

 

public class Ws_1 {

      

       public String function_1(String str_1){

             

              System.out.println(" *** service 被调用了 ***  接收参数:"+str_1);

              String str =" scorpio  :  " + str_1+"  is ok ";  //接到客户端请求,然后处理

        //… …

              return str ;      //最后把结果返回客户端

             

       }

 

}

1.5、修改tomcat下的server.xml

本人server.xml文件路径为D:/apache-tomcat-5.5.26/conf/server.xml

 

</Host>上一行增加或修改为

<Context path='/WS_Test' docBase='D:/workspace/WS_Test/WebRoot' debuge='0' reloadable='true'/>

 

其中:/WS_Test 为上下文的根,在这里用工程名命名(可随意)

D:/workspace/WS_Test/WebRoot 为工程web所在的路径

 

1.6、在WEB-INF下创建deploy.wsdd文件,内容如下

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

 <service name="Say_Hello_Service" provider="java:RPC">

  <parameter name="className" value="test_1.Ws_1"/>

  <parameter name="allowedMethods" value="*"/>

 </service>

</deployment>

 

注:Say_Hello_Service,为service的名字

test_1.Ws_1,为Say_Hello_Service对应的类

 

1.7、在WEB-INF下创建deploy.bat文件,内容如下

set Axis_Lib=D:/workspace/WS_Test/WebRoot/WEB-INF/lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Axis_Servlet=http://localhost:7777/WS_Test/servlet/AxisServlet

%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd

pause

 

其中D:/workspace/WS_Test/WebRoot/WEB-INF/lib对应改为自己的工程lib所在的路径

http://localhost:7777/WS_Test/servlet/AxisServlet中的7777改为 自己的端口号

 

注:这里特别注意,在tomcat中一定要配置工程上下文的根(我这里用的是工程名:WS_Test

 

1.8、先启动tomcat,然后运行刚创建的deploy.bat

执行完毕后,WEB-INF下会多出一个server-config.wsdd文件

1.9、在浏览器地址栏里输入http://localhost:7777/WS_Test/servlet/AxisServlet7777改成自己tomcat的端口号

如有如下内容 则服务器端 编码完毕

  • Say_Hello_Service (wsdl)
    • function_1

 

 

 

2、   客户端

2.1、建立一个java工程  WS_Test_client

2.2、工程下文件夹WS_Test_client下建立一个lib文件夹

axis相关jar包考入工程的lib文件夹下(jar包见附件)

2.3、工程文件夹WS_Test_client建立一个test_1_client文件夹

2.4、工程文件夹WS_Test_client下直接创建wsdl2java.bat文件

内容如下

set Axis_Lib=D:/workspace/WS_Test_client/lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Output_Path=D:/workspace/WS_Test_client

set Package=test_1_client

%Java_Cmd% org.apache.axis.wsdl.WSDL2Java –p%Package% -o%Output_Path%  http://localhost:7777/WS_Test/services/Say_Hello_Service?wsdl

Pause

 

其中 D:/workspace/WS_Test_client/lib 为客户端java工程lib路径

     D:/workspace/WS_Test_client/ test_1_client 存放生成文件路径

test_1_client   生成的类的包名

 

2.5 运行wsdl2java.bat文件

前提:服务器端服务已开启

运行完毕后 会多出

Say_Hello_ServiceSoapBindingStub.java

Ws_1.java

Ws_1Service.java

Ws_1ServiceLocator.java

等文件

2.6、创建调用服务器service的类test_1_client. Main.java

 

package test_1_client;

 

public class Main {

 

       /**

        * @param args

        */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

             

              Ws_1ServiceLocator local = new Ws_1ServiceLocator();

              try{

                     Ws_1 ws = local.getSay_Hello_Service();

                     String str = ws.function_1("heihei"); //调用服务器端方法

                     System.out.println(str);

              }catch(Exception e){

                    

                     e.printStackTrace();

              }

              }

 

       }

   

2.7、运行test_1_client. Main.java 输出台输出服务器端返回结果即调用服务器端成功

 

--------------------------------------------------------------

晕,上传不了附件,需要jar包的朋友给我发email吧:flg126@126.com

原创粉丝点击