锁定老帖子 主题:Axis开发WebService 指南
精华帖 (0) :: 良好帖 (0) :: 新手帖 (9) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-22
Axis开发WebService 指南一、 开发环境 l MyEclipse 6.5 l Tomcat 6.0.24 l Jdk 1.6.0_22 l Axis1.4
二、Axis简介:
axis全称Apache EXtensible Interaction System 即 阿帕奇 可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建 服务器 端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎(例如Tomcat)的服务器。 下载1.4 Final 链接地址:
三、Java开发Webservice 示例 Axis支持三种WebService 的部署和开发,分别为: Stubs方式是最通用的做法,又因其灵活的特点,建议使用这种方式. 下面是详细的开发步骤: 1) 创建web工程 1、 MyEclipse 6.5创建web project,取名为axistest; 2、 新建文件夹 文件夹名为lib ,然后 将下载下来的axis 其 axis-1_4\lib 目录下的jar 拷贝到ib目录下,将这些jar引入到axistest classpath 下,如图:
2) .编写Server 程序 1、 新建class,包取名:server 类名:HelloServer 声明sayHello方法,具体代码如下: package Server;
/**
* 开发webservice: 服务器端
* @author lvqing
*
*/
public class HelloServer {
public String sayHello(String name){
return "hello:"+name;
}
}
结构图:
2、配置web.xml web.xml文件很容易配置,拷贝axis包里面的WebService示例的web.xml配置到我们的工程中的web.xml中就可以了。 ·
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- =============== Axis Webservice =============-->
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</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>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-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>
<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>
</web-app>
3) 部署 web project 利用MyEclipse部署工具 将我们的项目部署到Tomcat\webapp目录下
4) 创建 deploy.wsdd文件 这个文件可以在任意目录下创建,但是为了维护方便 ,我将它创建在zxistest 项目Src:目录下: 示例代码: <deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!-- 这里的helloserver为wsdd描述符中的ServiceNamespace -->
<service name="helloserver" provider="java:RPC">
<!-- 这里的ClassName就是我的服务类了,这个服务主要功能就是传递一个自定义的对象 -->
<parameter name="className" value="Server.HelloServer" />
<!-- 这里描术的意思是,此服务类中的方法全部享出来. value值为*号
如果你只想让你的客户端只能调用其中一个方法时,value值改为方法名就可以了. -->
<parameter name="allowedMethods" value="*" />
</service>
</deployment>
5) 生成 server-config.wsdd 文件 server-config.wsdd 文件是WebService的核心配置文件。Web服务能否发布,很大程度上取决于次文件的配置 这里 我们写个批处理脚本deploy.bat: set Axis_Lib=D:\workspace\MEE\NMA\axistest\lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Axis_Servlet=http://localhost:8080/axistest/servlet/AxisServlet %Java_Cmd% org.apache.axis.client.AdminClient -l %Axis_Servlet% deploy.wsdd pause; 接下来,在执行deploy.bat前,请确保Tomcat 服务已运行,否则在Dos命令窗口中看到如下错误:
看到如下图运行的结果,表明已经在Tomcat\webapps\axistest\WEB-INF目录下 生成了server-config.wsdd文件. (Activation.jar 和 mail.jar这两个包虽然没有加入到CLASSPATH中,但是不影响我们的开发。)
好了,大功告成了!webservice 发布成功了,重启Tomcat,我们来测试一下,看是否发布成功. 在IE上输入: http://localhost:8080/axistest/services/helloserver?wsdl 看到如图结果表明发布成功:
6) 生成客户端Client wsdl文件 在IE上输入: http://localhost:8080/axistest/services/helloserver?wsdl ,点击文件 → 另存为.存到a xistest 项目Src:目录下 7)Wsdl2Java 为了方便,我们写个批处理脚本 WSDL2Java.bat set Axis_Lib=D:\workspace\MEE\NMA\axistest\lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Output_Path=D:\workspace\MEE\NMA\axistest\src set Package=client %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p %Package% helloserver.wsdl pause; 解释下此命令: %Output_Path%是客户端文件输出路径,%Package%是包名 这时 我们可以看到 a xistest 工程下已经生成了客户端程序,如图:
8) 客户端测试代码 package client;
import java.net.URL;
/**
* webservice 客户端 程序
*/
public class ClientTest {
public static void main(String[] args) {
HelloServerService service = null;
HelloServer helloServer = null;
try {
System.out.println("connect......");
String StrPortAddress = "http://localhost:8080/axistest/services/helloserver";
URL portAddress = new URL(StrPortAddress);
// 得到客户端服务
service = new HelloServerServiceLocator();
// 得到客户端stub
helloServer = service.gethelloserver(portAddress);
// 测试服务方法
String resultStr = helloServer.sayHello("iteye");
System.out.println(resultStr);
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("End.");
}
}
}
终结 …… 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-03-24
為什麼不使用Axis2 ?
|
|
返回顶楼 | |
发表时间:2012-03-24
我知道axis2的某些jar包和weblogic下跑oracle oim会报错,而axis1.4就不会冲突
|
|
返回顶楼 | |
发表时间:2012-03-24
使唤axis2玩玩,挺不错的,现在用这个的公司很多的,功能很强大
|
|
返回顶楼 | |
发表时间:2012-03-25
最后修改:2012-03-25
没用过,不知道怎么样!!!
|
|
返回顶楼 | |
发表时间:2012-10-25
eclipse有web service的插件,不需要自己写脚本的~
|
|
返回顶楼 | |
浏览 14640 次