1.引入Jar包
2.Web.xml中添加信息
<servlet> <servlet-name>SOAPMonitorService</servlet-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> <servlet-name>AdminServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class> <load-on-startup>100</load-on-startup> </servlet> <servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SOAPMonitorService</servlet-name> <url-pattern>/SOAPMonitor</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AdminServlet</servlet-name> <url-pattern>/servlet/AdminServlet</url-pattern> </servlet-mapping> <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> <listener> <listener-class> org.apache.axis.transport.http.AxisHTTPSessionListener </listener-class> </listener>
3.创建Service类
package net.hello.soap; public class HelloService { public Person sayHello(String username, Toy toy) { System.out.println("接收:" + username + ",Toy:" + toy.toString()); Person person = new Person(); person.createPerson(username); System.out.println("自动生成Person:" + person.toString()); person.setToy(toy); System.out.println("加入Toy的Person:" + person.toString()); return person; } }
4.其他参数类
Person:
package net.hello.soap; import java.io.Serializable; import java.util.Arrays; import java.util.Date; public class Person implements Serializable { private static final long serialVersionUID = -4109457804756865917L; private String name; private int xynum; private Date birthday; private String[] aihao; private static long index = 1; private Toy toy; public void createPerson(String name) { if (name != null && !name.trim().equals("")) { this.name = name.trim(); } else { this.name = "Person" + index++; } birthday = new Date(); xynum = Math.round(index); aihao = new String[] { "aihao1", "aihao2", "aihao3", "爱好4", "爱好5" }; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getXynum() { return xynum; } public void setXynum(int xynum) { this.xynum = xynum; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String[] getAihao() { return aihao; } public void setAihao(String[] aihao) { this.aihao = aihao; } public static long getIndex() { return index; } public static void setIndex(long index) { Person.index = index; } public Toy getToy() { return toy; } public void setToy(Toy toy) { this.toy = toy; } @Override public String toString() { return "Person [name=" + name + ", xynum=" + xynum + ", birthday=" + birthday + ", aihao=" + Arrays.toString(aihao) + ", toy=" + toy + "]"; } }
Toy:
package net.hello.soap; import java.io.Serializable; public class Toy implements Serializable { private static final long serialVersionUID = -724430347070233459L; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Toy [name=" + name + ", age=" + age + "]"; } }
5.WEB-INF下创建server-config.wsdd
<?xml version="1.0" encoding="UTF-8"?> <deployment xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler" xmlns="http://xml.apache.org/axis/wsdd/"> <globalConfiguration name="defaultClientConfig"> <requestFlow name="RequestFlow1" type=""> <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="session" /> </handler> <handler name="Handler2" 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" /> <transport name="http" type=""> <requestFlow name="RequestFlow1" type=""> <handler name="Handler1" type="URLMapper" /> <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler" /> </requestFlow> </transport> <transport name="local" type=""> <responseFlow name="ResponseFlow1" type=""> <handler name="Handler1" type="LocalResponder" /> </responseFlow> </transport> <service name="AdminService" type="" provider="java:MSG"> <parameter name="allowedMethods" value="AdminService" /> <parameter name="enableRemoteAdmin" value="false" /> <parameter name="className" value="org.apache.axis.utils.Admin" /> <namespace>http://xml.apache.org/axis/wsdd/</namespace> </service> <service name="Version" type="" provider="java:RPC"> <parameter name="allowedMethods" value="getVersion" /> <parameter name="className" value="org.apache.axis.Version" /> </service> <service name="helloService" provider="java:RPC"> <parameter name="className" value="net.hello.soap.HelloService" /> <parameter name="allowedMethods" value="sayHello" /> <typeMapping xmlns:ns="urn:Toy" qname="ns:Toy" type="java:net.hello.soap.Toy" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> <typeMapping xmlns:ns="urn:Person" qname="ns:Person" type="java:net.hello.soap.Person" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </service> </deployment>
6.客户端
package net.hello.soap.test; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import net.hello.soap.Toy; import net.hello.soap.Person; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; public class Test { public static void main(String[] args) { try { String username = "Guest"; String url = "http://localhost:8099/hellonet/services/helloService"; Service service = new Service(); Toy toy = new Toy(); toy.setName("Toy1"); toy.setAge(1); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new URL(url)); call.setOperationName(new QName("helloService", "sayHello")); QName toyQn = new QName("ns:Toy"); QName personQn = new QName("ns:Person"); call.registerTypeMapping(Person.class, personQn, // typeMapping注册,包含序列化和反序列化的操作 new org.apache.axis.encoding.ser.BeanSerializerFactory(Person.class, personQn), new org.apache.axis.encoding.ser.BeanDeserializerFactory(Person.class, personQn)); call.registerTypeMapping(Toy.class, toyQn, // typeMapping注册,包含序列化和反序列化的操作 new org.apache.axis.encoding.ser.BeanSerializerFactory(Toy.class, toyQn), new org.apache.axis.encoding.ser.BeanDeserializerFactory(Toy.class, toyQn)); call.addParameter("username", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("toy2", toyQn, ParameterMode.IN); call.setReturnType(personQn, Person.class); Person person = (Person) call.invoke(new Object[] { username, toy }); System.out.println(person); } catch (Exception e) { e.printStackTrace(); } } }
7.数组这样写
WSDD文件中:
<typeMapping xmlns:ns="urn:array" qname="ns:array" type="java:test.Person[]" serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
客户端:
QName arrQn = new QName("ns:array"); call.registerTypeMapping(Person[].class, arrQn, new org.apache.axis.encoding.ser.ArraySerializerFactory(Person[].class, arrQn), new org.apache.axis.encoding.ser.ArrayDeserializerFactory(arrQn));
8.运行输出
运行服务器,访问
http://localhost:8099/hellonet/servlet/AxisServlet/,页面显示:
访问:http://localhost:8099/hellonet/services/helloService?wsdl,页面显示:
<wsdl:definitions targetNamespace="http://localhost:8099/hellonet/services/helloService"><!--WSDL created by Apache Axis version: 1.4 Built on Apr 22, 2006 (06:55:48 PDT)--><wsdl:types><schema targetNamespace="urn:Toy"><import namespace="http://localhost:8099/hellonet/services/helloService"/><import namespace="urn:Person"/><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="Toy"><sequence><element name="age" type="xsd:int"/><element name="name" nillable="true" type="soapenc:string"/></sequence></complexType></schema><schema targetNamespace="http://localhost:8099/hellonet/services/helloService"><import namespace="urn:Toy"/><import namespace="urn:Person"/><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="ArrayOf_soapenc_string"><complexContent><restriction base="soapenc:Array"><attribute ref="soapenc:arrayType" wsdl:arrayType="soapenc:string[]"/></restriction></complexContent></complexType></schema><schema targetNamespace="urn:Person"><import namespace="urn:Toy"/><import namespace="http://localhost:8099/hellonet/services/helloService"/><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="Person"><sequence><element name="aihao" nillable="true" type="impl:ArrayOf_soapenc_string"/><element name="birthday" nillable="true" type="xsd:dateTime"/><element name="name" nillable="true" type="soapenc:string"/><element name="toy" nillable="true" type="tns1:Toy"/><element name="xynum" type="xsd:int"/></sequence></complexType></schema></wsdl:types><wsdl:message name="sayHelloResponse"><wsdl:part name="sayHelloReturn" type="tns2:Person"> </wsdl:part></wsdl:message><wsdl:message name="sayHelloRequest"><wsdl:part name="username" type="soapenc:string"> </wsdl:part><wsdl:part name="toy" type="tns1:Toy"> </wsdl:part></wsdl:message><wsdl:portType name="HelloService"><wsdl:operation name="sayHello" parameterOrder="username toy"><wsdl:input message="impl:sayHelloRequest" name="sayHelloRequest"> </wsdl:input><wsdl:output message="impl:sayHelloResponse" name="sayHelloResponse"> </wsdl:output></wsdl:operation></wsdl:portType><wsdl:binding name="helloServiceSoapBinding" type="impl:HelloService"><wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="sayHello"><wsdlsoap:operation soapAction=""/><wsdl:input name="sayHelloRequest"><wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://soap.hello.net" use="encoded"/></wsdl:input><wsdl:output name="sayHelloResponse"><wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8099/hellonet/services/helloService" use="encoded"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="HelloServiceService"><wsdl:port binding="impl:helloServiceSoapBinding" name="helloService"><wsdlsoap:address location="http://localhost:8099/hellonet/services/helloService"/></wsdl:port></wsdl:service></wsdl:definitions>
运行客户端:
客户端输出:
Person [name=Guest, xynum=1, birthday=Mon Jul 28 14:41:13 CST 2014, aihao=[aihao1, aihao2, aihao3, 爱好4, 爱好5], toy=Toy [name=Toy1, age=1]]
服务端输出:
接收:Guest,Toy:Toy [name=Toy1, age=1]
自动生成Person:Person [name=Guest, xynum=1, birthday=Mon Jul 28 14:41:13 CST 2014, aihao=[aihao1, aihao2, aihao3, 爱好4, 爱好5], toy=null]
加入Toy的Person:Person [name=Guest, xynum=1, birthday=Mon Jul 28 14:41:13 CST 2014, aihao=[aihao1, aihao2, aihao3, 爱好4, 爱好5], toy=Toy [name=Toy1, age=1]]
相关推荐
Java和Axis2是开发Web服务客户端的重要工具,用于调用基于SOAP协议的Web服务。本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的...
Axis是Apache软件基金会开发的一个开源工具,专门用于实现SOAP协议,它提供了在Java平台上创建和使用Web服务的能力。本实例主要探讨了使用Axis进行SOAP Web服务发布的三种方法以及如何进行调用。 1. **命令行发布...
本教程将深入探讨如何在Java中使用Axis2构建一个包含SOAP Header验证的客户端。 首先,理解SOAP Header至关重要。SOAP Header是SOAP消息的一部分,用于传递非处理信息,如认证、交易、安全等。与SOAP Body不同,...
Axis2支持Java API,这使得开发人员可以使用Java来编写Web服务的业务逻辑。此外,Axis2还提供了丰富的工具集,如wsdl2java等,帮助开发人员自动生成客户端和服务端的代码。 #### 五、Axis2的配置与部署 1. **配置...
在Java世界中,创建和使用Web服务是一个常见的任务,而Axis2是Apache软件基金会开发的一个高效的Web服务框架。它提供了丰富的功能,使得开发、部署和管理Web服务变得简单易行。本篇文章将深入探讨如何使用Java和Axis...
以下是使用AXIS2在IDEA中生成SOAP相关Java类的详细步骤: 1. **安装AXIS2插件**:首先,你需要确保IDEA已经安装了AXIS2插件。如果没有,可以通过IDEA的插件市场搜索并安装“Axis2 Codegen”插件。 2. **准备WSDL...
Axis是基于Java的SOAP(Simple Object Access Protocol)实现,遵循SOAP 1.2和SOAP with Attachments规范。它被广泛应用于各种开发工具,如JBuilder和Eclipse的Lomboz插件。Axis 1.1是其当时最新的版本,提供了一个...
本篇文章将详细介绍如何使用Apache Axis 1(以下简称Axis1)来创建和调用一个简单的Java Web Service示例。通过这种方式,我们不仅能够学习到Java Web Service的基本概念和工作原理,还能掌握具体的实现步骤和技术...
Apache Axis是Java平台上的一个SOAP库,它提供了一种简单的方法来创建和使用Web服务。Axis提供了从Java类到SOAP消息的自动绑定,以及从SOAP消息到Java方法的反向绑定。这使得开发者可以专注于业务逻辑,而无需关心...
标题中的“Java通过Axis调用天气预报的WebService”是指使用Java编程语言,通过Apache Axis库来访问和使用公开的天气预报Web服务。Apache Axis是一个开放源码的SOAP(简单对象访问协议)工具包,它允许开发者创建和...
JAVA SOAP 用到的所有jar文件 axis.jar axis-ant.jar commons-discovery-0.2.jar jaxrpc.jar axis-schema.jar wsdl4j-1.5.1.jar saaj.jar xmlsec-1.3.0.jar
标题“Axis2教程和java调用webservice的各种方法总结”表明了本文档主要聚焦于两个核心内容:一是Axis2框架的使用教程,二是Java语言调用Web服务的不同方法的综合概述。 描述中的“Axis2教程”暗示了会详细讲解Axis...
本压缩包“java-ws-clients.rar”包含了一些关于如何使用Java和Apache Axis库创建及操作SOAP Web服务的实例。Apache Axis是一个开源的Java框架,它简化了SOAP客户端和服务端的实现。 SOAP是一种基于XML的协议,用于...
在Java环境中,Eclipse作为流行的集成开发环境(IDE),提供了强大的支持来帮助开发者使用Axis2创建、测试和管理Web服务。 在了解Eclipse Java Axis2之前,我们需要先理解Web服务的基本概念。Web服务是一种通过HTTP...
3. **部署服务**:使用Axis2的工具,如wsdl2java,将WSDL文件转换为Java代码,然后将服务类打包成服务存根(Stub)和 skeletons。 4. **启动服务**:通过Axis2的服务器实例化服务,使其监听特定端口,等待客户端请求...
在Java中,通常使用JAX-WS(Java API for XML Web Services)来处理SOAP消息,它提供了一种标准的方式来创建和消费Web服务。 4. **SOAP服务实现**:在Java中,可以通过实现一个接口或者继承特定的类来创建SOAP服务...
2. 使用Axis发布服务:有了接口和实现后,使用Axis的`wsdl2java`工具生成服务端代码。这个工具会根据你的接口生成相应的ServerStub和服务部署文件。然后,将服务部署到Axis服务器上,通常是在Tomcat或Jetty等Servlet...
这就是`Axis`工具的作用,它是一个开源的SOAP栈,能够帮助我们将WS-DL文件转换为Java代码。 `Axis`项目始于Apache软件基金会,最初版本为`Axis1.x`,后来发展到`Axis2`,我们这里提及的是`Axis2-1.7.4`。`Axis2`...
在IT行业中,尤其是在Web服务开发领域,Axis2是一个广泛使用的SOAP(简单对象访问协议)服务框架,它基于Java实现。SOAP是一种用于交换结构化信息的标准协议,XML则是其消息格式的基础。当我们处理SOAP XML报文时,...
根据提供的标题、描述、标签及部分内容,我们可以提炼出与 Axis 相关的 Java 知识点,主要包括 Axis 的安装配置、基本使用流程以及部署服务等内容。 ### 一、Axis 简介 #### 1.1 Axis 是什么? Axis 是 Apache ...