如果只是想使用Axis2编写一个WebService程序的话,非常简单。
工程的目录结构以及所需要的jar包(这里只是编写一个简单的服务端,因此并没有引入所有的jar,只是必须的一些jar)
A.编写服务器端:
1.新建一个Web工程Axis2Demo02,在WEB-INF目录下面建立services文件夹,并将所需的jar包拷贝到lib目录下
2.修改web.xml文件,添加如下内容:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Apache-Axis2</display-name> <servlet> <display-name>Apache-Axis Servlet</display-name> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
2.编写符合axis2的服务端代码,目录结构如下:
说明:
a)MANIFEST.MF在此可以省略,因为我们在此并不是想弄一个可以执行的jar,而只是一个可发布的服务。
b)services.xml配置,核心文件,必须有,配置如下:
<service name="helloServer" ><!--这个与URL相关:http://localhost:8089/Axis2Demo02/services/helloServer?wsdl--> <description> Please Type your service description here </description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass">server.HelloServer</parameter> <!--类的全名--> </service>
c)编写服务类HelloServer,并将eclipse自动编译的class文件放到server目录下 (该步骤可以省略)
package server; import model.Student; public class HelloServer { public String sayHello(String name){ return "Hello, "+name; } /** * * @param studentNo * @return student */ public Student queryStudentByNo(String stuNo){ Student stu = new Student(); stu.setStuNo(stuNo); stu.setName("boredStudent"); stu.setAge(22); return stu; } }
c)编写Student,并且将eclipse自动编译生成的class文件放到model中(该步骤可以省略)
package model; public class Student { private String stuNo;//学号 private String name; private int age; public String getStuNo() { return stuNo; } public void setStuNo(String stuNo) { this.stuNo = stuNo; } 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; } }
e)使用jar命令,打包成helloServer.jar,并将jar文件的后缀名改为helloServer.aar
i) cd HelloServer 进入HelloServer目录
ii) jar cvfM helloServer.jar META-INF 将 META-INF文件夹打包成jar(文件名helloServer),这是不要添加M(大写)选项,不需要帮我们生成MANIFEST.MF文件。因为我们已经有了已经手动创建的MANIFEST.MF文件
jar命令行选项说明:c=创建新的存档;
f=指定存档文件名,在这里为helloServer.jar;
v=生成详细输出到标准输出上,你可以看见生成jar的过程;
M=不产生所有项的清单文件,即MANIFEST.MF文件。如果不配置该参数,则jar命令会自动帮我们生成MANIFEST.MF文件
总结:最后我们可以发现只有b和e步骤是必要的,其他的都可以省略。使用axis2开发webService,我们只需要配置一下services.xml文件就可以了,axis2就会自动将src目录下的HelloServer作为服务类。helloServer.aar的目录结构如下:
4.将helloServer.aar文件放入WEB-INF/services目录下,然后重启服务
5.访问:http://localhost:8089/Axis2Demo02/services/helloServer?wsdl,出现如下内容则说明部署成功
B.编写客户端测试代码:在src目录下新建RPCClient.java
import javax.xml.namespace.QName; import model.Student; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; public class RPCClient { public static void main(String[] args) throws Exception { // 使用RPC方式调用WebService RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); // 指定调用WebService的URL EndpointReference targetEPR = new EndpointReference( "http://localhost:8089/Axis2Demo02/services/helloServer"); options.setTo(targetEPR); // 指定sayHello方法的参数值 Object[] opAddEntryArgs = new Object[] {"高伟刚"}; // 指定sayHello方法返回值的数据类型的Class对象 Class[] classes = new Class[] {String.class}; // 指定要调用的sayHello方法及WSDL文件的命名空间 QName opAddEntry = new QName("http://server", "sayHello"); // // 调用sayHello方法并输出该方法的返回值 System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]); // 指定queryStudentByNo方法的参数值 Object[] stuNo = new Object[] {"201004070117"}; // 指定queryStudentByNo方法返回值的数据类型的Class对象 Class[] studentClass = new Class[] {Student.class}; // 指定要调用的queryStudentByNo方法及WSDL文件的命名空间 QName queryStudentEnty = new QName("http://server", "queryStudentByNo"); // // 调用queryStudentByNo方法并输出该方法的返回值 Student student = (Student)serviceClient.invokeBlocking(queryStudentEnty, stuNo, studentClass)[0]; System.out.println(student.getName()); } }
相关推荐
axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...
axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...
标题中的"axis2-1.6.2-war.zip"指的是Apache Axis2的1.6.2版本的Web服务部署包,以WAR(Web ARchive)格式打包。Apache Axis2是一个强大且灵活的Web服务引擎,它允许开发人员创建、部署和管理Web服务。这个版本的...
我们主要关注两个版本的Axis2:Axis2-1.6.2-bin和Axis2-1.6.2-war。 1. **Axis2-1.6.2-bin** 这个版本的Axis2是一个二进制发行版,包含了运行和开发Web服务所需的所有库和工具。其主要内容包括: - **核心库**:...
标题中的"axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2"指的是两个与Apache Axis2相关的Eclipse插件:Axis2代码生成插件和Axis2服务插件,它们是版本1.6.2的。Apache Axis2是一个流行的...
标题中的"axis2-eclipse-codegen-plugin-1.6.2.zip"和"axis2-eclipse-service-plugin-1.6.2.zip"是两个与Apache Axis2相关的Eclipse插件,用于简化Web服务的开发过程。Apache Axis2是Java平台上一个成熟的Web服务...
标题 "Axis2-1.6.2" 指的是Apache Axis2的1.6.2版本,这是一个开源的Web服务引擎,专为构建高效、高性能的SOAP(Simple Object Access Protocol)服务而设计。SOAP是一种基于XML的协议,用于在Web上交换结构化的和...
标题中的"axis2-1.6.2-war+axis2-1.6.1-war+axis2-1.6.2-bin"表明这是一个包含不同版本的Apache Axis2服务框架的集合。Axis2是Apache软件基金会开发的一个Web服务引擎,它主要用于创建和部署Web服务以及处理SOAP消息...
这个标题 "axis2-1.6.2 所需最少的 jar 包 亲测!!!" 指出,这是一个精简版的 Axis2 依赖集合,经过测试,可以确保基本功能的正常运行,无需额外的 jar 包。 描述中的 "自己亲自测试过!可以直接运行,没有问题" ...
该下载包含axis2-1.6.2-bin.zip发布执行版、axis2-1.6.2-docs.zip文档包、axis2-1.6.2-src.zip源码包、axis2-1.6.2-war.zip项目包。
标题“axis2-1.6.2-bin”指的是Apache Axis2的一个特定版本——1.6.2的二进制发布包。Apache Axis2是Web服务引擎,它专注于提供高性能、可扩展性和灵活性,用于构建和部署Web服务。这个版本(1.6.2)包含了运行和...
配置java web service开发环境时,需要保证axis2的版本和axis2-eclipse插件的版本要一致,否者可能导致莫名其妙的编译错误。...内含:axis2-1.6.2-war.zip 和axis2-eclipsse-codegen-plugin-1.6.2.zip
在axis2-1.6.2的war包中,包含了Axis2运行时环境的所有必要组件,如Servlet、JSP等,使得你可以直接将此war文件部署到支持Java EE的Web服务器(如Tomcat、Jetty)上,快速启动一个运行在HTTP服务器上的Axis2实例。...
标题中的"axis2-1.6.2-war"和"axis2-1.6.2-bin"指的是Apache Axis2的不同版本发布形式,这两个是Apache Axis2 Web服务框架的两个核心组件,分别代表了Web应用程序(WAR)和二进制分发版。 Apache Axis2是Java世界中...
标题提到的 "axis2-1.6.2 插件" 是针对 Axis2 框架的一个特定版本,即 1.6.2,它包含了两个主要的压缩包文件:axis2-eclipse-codegen-plugin-1.6.2.zip 和 axis2-eclipse-service-plugin-1.6.2.zip。 1. **axis2-...
总的来说,"axis2-eclipse-codegen-plugin-1.6.2+axis2-eclipse-service-plugin-1.6.2"的组合为Eclipse用户提供了一套完整的Web服务开发解决方案,从生成代码到部署服务,全程都在熟悉的开发环境中完成,极大地提升...