Webservice开发 --Axis1.x

Webservice的开发方式有好几种,最常用最成熟的就是用axis来开发,但webservice所涉及的知识点很多,如果之前没有学过要去开发的确有些难度,自学起来也挺困难,但是在实际的开发中所用却很少,我参考的大量资料写了一个小例子,以后在开发此类服务,只要写好自己的业务类然后直接套用即可,此文档可以让不懂webservice的同志快速开发出webservice !

工程整体构架,下面将说明整个开发过程,并详细解释每个文件。


Webservice开发 --Axis1.x_第1张图片
 

1.新建工程

第一步就是建立web工程,并加入jar包【没什么可说的】

2.编写业务类

编写业务类,也就是我们要提供的服务即上面的HelloWorldWSDD.java这里只有2个简单方法,以后在开发过程中这个才是开发的重点。

package commmon.sinosoft.mmj.claim;

public class HelloWorldWSDD {
 public String getName(String name) {
  return "your name : " + name;
 }
 public int getAge(int age) {
  return age + 10;
 }
}

3.添加配置文件

添加配置文件。把这个web.xml放WEB-INF下即可,这个配置文件几乎所有的开发都是一样的【从axis1.4的jar包中获取的】,不要更改,直接拿过去用就行了,如特殊需要需要更改可查阅相关资料

<?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>AxisServlet</display-name>
 <servlet>
  <servlet-name>AxisServlet</servlet-name>
  <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>AxisServlet</servlet-name>
  <url-pattern>/services/*</url-pattern>
 </servlet-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>

4.发布服务

发布服务。server-config.wsdd文件放WEB-INF下即可,文件是用命令生成的,生成过程有点麻烦这里不讲了,不过在以后开发的过程中可以直接使用这个文件,只需要稍加修改就行了

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <globalConfiguration>
  <parameter name="adminPassword" value="admin"/>
  <parameter name="attachments.Directory" value="./attachments"/>
  <parameter name="attachments.implementation"
             value="org.apache.axis.attachments.AttachmentsImpl"/>
  <parameter name="sendXsiTypes" value="true"/>
  <parameter name="sendMultiRefs" value="true"/>
  <parameter name="sendXMLDeclaration" value="true"/>
  <parameter name="axis.sendMinimizedElements" value="true"/>
  <requestFlow>
   <handler type="java:org.apache.axis.handlers.JWSHandler">
    <parameter name="scope" value="session"/>
   </handler>
   <handler type="java:org.apache.axis.handlers.JWSHandler">
    <parameter name="scope" value="request"/>
    <parameter name="extension" value=".jwr"/>
   </handler>
  </requestFlow>
 </globalConfiguration>
 <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
 <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
 <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<!-- 我写的-->

 <service name="HelloWorldWSDD" provider="java:RPC">
  <parameter name="allowedMethods" value="*"/>
  <parameter name="scope" value="request"/>
  <parameter name="className" value="commmon.sinosoft.mmj.claim.HelloWorldWSDD"/>
 </service>

 
 
 <transport name="http">
  <requestFlow>
   <handler type="URLMapper"/>
   <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
  </requestFlow>
  <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>
  <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
  <parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/>
  <parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/>
  <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>
  <parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
 </transport>
 <transport name="local">
  <responseFlow>
   <handler type="LocalResponder"/>
  </responseFlow>
 </transport>
</deployment>

5.发布服务参数说明

发布服务参数说明。

 
Webservice开发 --Axis1.x_第2张图片
 

【以后在服务服务只要在这里加一个service就行了。】

6.验证

1. 验证。把上面的都搞好后【发布该工程到tomcat然后启动tomcat】就可以验证一下我们的服务是否发布成功了。在IE中输入:http://localhost:8080/ToClaim/services

 
Webservice开发 --Axis1.x_第3张图片
 

7.编写测试类

1. 下面就是编写测试类---即调用该服务的客户端

package commmon.sinosoft.mmj.claim;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class HelloWorldWSDDClient {
  public static void main(String[] args) throws ServiceException, RemoteException {
   Integer age = new Integer(26);
         //webService访问地址
         String url = "http://localhost:8080/ToClaim/services/HelloWorldWSDD";
         //创建服务
         Service service = new Service();
         //创建调用句柄
         Call call = (Call) service.createCall();
         //设置请求地址
         call.setTargetEndpointAddress(url);
         //设置调用的方法和方法的命名空间【我们没有设置命名空间,所以此处为空】
         call.setOperationName(new QName("", "getName"));
         //通过映射获得结果
         String resultName = (String) call.invoke(new Object[] { "liuli" });
         System.out.println(resultName);
         //设置调用的方法和方法的命名空间【我们没有设置命名空间,所以此处为空】
         call.setOperationName(new QName("", "getAge"));
         //通过映射获得结果
         int resultAge = Integer.parseInt(call.invoke(new Object[] { age }).toString());
         //服务器端+10
        System.out.println(resultAge);
     }
}

8.补充

在第六步中你会看到【wsdl】的超链接

【或输入:http://localhost:8080/ToClaim/services/HelloWorldWSDD?wsdl】,点击进去就可以看到发布服务的wsdl文件,下面作简要说明

 
Webservice开发 --Axis1.x_第4张图片

 

Message



 

PortType


Webservice开发 --Axis1.x_第5张图片
 

 Binding

 
Webservice开发 --Axis1.x_第6张图片
 Service 

 

你可能感兴趣的:(webservice)