BaoYaEr
使用Axis开发Web Service程序
1、新建一个Web工程,工程名为“AxisTest”:
2、新建“lib”文件夹,然后把主要JAR包:axis.jar,commons-discovery-0.2.jar,commons-logging-1.0.4.jar,jaxrpc.jar,wsdl4j-1.5.1.jar,saaj.jar;可选包(发布服务及生成客户端程序是要用到的):activation.jar;mail.jar都拷贝到此“lib”文件夹下,并把主要的JAR包添加到工程的classpath中;
3、配置“web.xml”:
<?
xml version="1.0" encoding="UTF-8"
?>
<
web-app
version
="2.4"
xmlns
="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<
display-name
>
Apache-Axis
</
display-name
>
<
listener
>
<
listener-class
>
org.apache.axis.transport.http.AxisHTTPSessionListener
</
listener-class
>
</
listener
>
<
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
>
<!--
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
>
<
session-timeout
>
20
</
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
>
可参照“axis-1_4\webapps\axis\WEB-INF\web.xml”进行配置;
4、编写服务端程序server,SayHello.java,编译server.SayHello.java
package
server;
public
class
SayHello
{
public
String getName(String name)
{
return
"
hello
"
+
name;
}
}
5、编写wsdd文件
deploy.wsdd文件内容如下:
<
deployment
xmlns
="http://xml.apache.org/axis/wsdd/"
xmlns:java
="http://xml.apache.org/axis/wsdd/providers/java"
>
<
service
name
="SayHello"
provider
="java:RPC"
>
<
parameter
name
="className"
value
="server.SayHello.getName"
/>
<
parameter
name
="allowedMethods"
value
="*"
/>
<
parameter
name
="scope"
value
="session"
/>
<!--
request, session, or application
-->
</
service
>
</
deployment
>
6、把工程发布到Tomcat并启动Tomcat;
7、发布服务
编辑一个deploy.bat,Axis_Lib为axis.jar路径。内容如下:
set Axis_Lib=.\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
执行这个批处理文件,这时候,如果提示成功的话,访问http://localhost:8080/AxisTest/servlet/AxisServlet或http://localhost:8080/AxisTest/services就会显示服务列表。
8、生成客户端client stub文件
在浏览器上访问服务器端的服务,可以下载到WSDL文件,通过Axis的相关工具,可以自动从WSDL文件中生成Web Service的客户端代码。
编写一个WSDL2Java.bat文件,其内容如下:
set Axis_Lib=.\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=.\src
set Package=server.com
set wsdl_path=http://localhost:8080/AxisTest/services/ SayHello?wsdl
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% %wsdl_path%
执行这个批处理文件就可以生成client stub.
生成的stub client文件列表为:SayHello.java,SayHelloService.java,SayHelloServiceLocator.java,SayHelloSoapBindingStub.java .
9、编写客户端程序,编译并执行
1)、Stubs方式
下面是一段junit测试客户端代码。
import
java.net.URL;
import
junit.framework.Test;
import
junit.framework.TestCase;
import
junit.framework.TestSuite;
public
class
TestWSClient
extends
TestCase
{
public
TestWSClient(String string)
{
super
(string);
}
public
void
SayHelloClient()
throws
Exception
{
SayHelloService service
=
new
SayHelloServiceLocator();
SayHello_PortType client
=
service.getSayHello() ;
String retValue
=
client.getName(
"
clientname
"
);
System.out.println(retValue);
}
public
static
Test suite()
{
TestSuite suite
=
new
TestSuite();
suite.addTest(
new
TestWSClient(
"
SayHelloClient
"
));
return
suite;
}
}
2)、动态调用方式:
try
{
//
Options options = new Options(args);
String endpointURL
=
"
http://localhost:8080/AxisTest/services/SayHello
"
;
Service service
=
new
Service();
Call call
=
(Call) service.createCall();
call.setTargetEndpointAddress(
new
java.net.URL(endpointURL) );
call.setOperationName(
new
QName(
"
SayHello
"
,
"
getName
"
) );
String res
=
(String) call.invoke(
new
Object[]
{
"
Jack
"
}
);
System.out.println( res );
}
catch
(Exception e)
{
System.err.println(e.toString());
}
发表于 2007-10-15 09:31
大田斗
阅读(543)
评论(0)
编辑
收藏
所属分类:
开源opensource
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
mule事件驱动服务
XPath语法
mule示例分析
在xml的汪洋中遨游之mule篇
EqualsBuilder和HashCodeBuilder
webservice cfx学习
JTA事务初级研究
JAVA 对象池
mina中文教程
spring+atomikos+JTA完整例子
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
导航
BlogJava
首页
发新随笔
发新文章
联系
聚合
管理
统计
随笔: 32
文章: 427
评论: 144
引用: 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(5)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年12月 (1)
2008年4月 (2)
2008年2月 (1)
2008年1月 (1)
2007年12月 (3)
2007年11月 (1)
2007年10月 (3)
2007年7月 (2)
2007年6月 (1)
2007年4月 (2)
2007年3月 (3)
2007年2月 (5)
2007年1月 (3)
2006年12月 (4)
文章分类
axis(6)
(rss)
eclipse(7)
(rss)
Hibernate(30)
(rss)
html/js/css(107)
(rss)
java(106)
(rss)
linux(7)
(rss)
Lucene(7)
(rss)
spring(36)
(rss)
Spring CLOUd(1)
(rss)
Strtus(30)
(rss)
其它(48)
(rss)
开源opensource(48)
(rss)
数据库DateBase(30)
(rss)
设计模式(12)
(rss)
文章档案
2018年8月 (1)
2012年5月 (1)
2012年4月 (2)
2011年7月 (6)
2010年3月 (1)
2010年2月 (1)
2010年1月 (3)
2009年12月 (1)
2009年10月 (1)
2009年8月 (3)
2009年3月 (1)
2009年2月 (1)
2008年12月 (3)
2008年11月 (10)
2008年10月 (3)
2008年9月 (2)
2008年8月 (2)
2008年7月 (4)
2008年6月 (13)
2008年5月 (15)
2008年4月 (9)
2008年3月 (10)
2008年1月 (18)
2007年12月 (33)
2007年11月 (6)
2007年10月 (18)
2007年9月 (10)
2007年8月 (18)
2007年7月 (15)
2007年6月 (25)
2007年5月 (19)
2007年4月 (26)
2007年3月 (38)
2007年2月 (33)
2007年1月 (27)
2006年12月 (27)
2006年11月 (12)
java
Ajax特效网站
cndiy nio
GRO
Hani Suleiman's blog
Java之路
java论坛
J道
mule
mule 入门
oksonic(动画教程)
一路由你
中国eclipse
八进制
在线源码
多线程实战
天火
小米的blogjava
幻境伯克----jface/swt
很全的博克-强
每日一得
满江红
邢红瑞
飞翔
鸟诗选(js)
鸟食轩 (dhtml)
工具
apache中文手册
extjs学习
iconFindre
java 安全
javaresearch
java技巧网
js之王
matrix(study)
prototype api
spring中文
北京IT企业速查
在线流程图工具
雅虎翻译
朋友
Happyshow
hibernate异常
skywalker
sunshow
xf
亚光
同云博客
小弟鹏
张玉磊
昕
李阳
黄鸣
搜索
积分与排名
积分 - 1098441
排名 - 28
最新评论
1. re: hibernate.cfg.xml配置
好全啊 .. 棒棒哒 ~ !
--junqinag.yang
2. re: Quartz任务调度快速入门
我现在来看还是觉得不错
--小任
3. re: js中this的总结
评论内容较长,点击标题查看
--pam
4. re: Quartz任务调度快速入门
楼主辛苦
--yd
5. re: Quartz任务调度快速入门
顶了,内容写的很好
--sen
阅读排行榜
1. 网页不缓存(3536)
2. Form嵌套引起的问题 (2830)
3. 解决IE下CSS背景图片闪烁的Bug(2432)
4. Spring AOP的动态载入原理(2394)
5. 如何制作漂亮的Excel表格(2022)
评论排行榜
1. 北京户口--吃官司(5)
2. 开始→运行→输入的命令集锦(3)
3. 让网页上的所有图片动起来(2)
4. Dom4j 编码问题彻底解决 (1)
5. 心情不爽(1)