josson.jin
天地生人,有一人应有一人之业;人生在世,生一日当尽一日之勤!
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 122, comments - 25, trackbacks - 0
Apache CXF: Writing a service with Spring
一、设置构建路径(必要的jar包)
commons-logging-1.1.jar
geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar)
geronimo-annotation_1.0_spec-1.1.jar (JSR 250)
geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar)
geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar)
geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181)
jaxb-api-2.0.jar
jaxb-impl-2.0.5.jar
jaxws-api-2.0.jar
neethi-2.0.jar
saaj-api-1.3.jar
saaj-impl-1.3.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.1.jar
XmlSchema-1.2.jar
xml-resolver-1.2.jar
aopalliance-1.0.jar
spring-core-2.0.4.jar
spring-beans-2.0.4.jar
spring-context-2.0.4.jar
spring-web-2.0.4.jar
cxf-2.0-incubator.jar
二、编写服务类
a). 接口类HelloService.java
package
demo.spring;
import
java.util.List;
import
javax.jws.WebParam;
import
javax.jws.WebService;
import
demo.spring.model.UserInfoBean;
@WebService
public
interface
HelloService
{
public
String sayHello(@WebParam(name
=
"
name
"
)String text);
public
UserInfoBean getUserInfo(@WebParam(name
=
"
username
"
)String name);
public
List
<
UserInfoBean
>
getUsers();
}
b).实现类HelloServiceImpl.java
package
demo.spring;
import
java.util.ArrayList;
import
java.util.List;
import
javax.jws.WebService;
import
demo.cxf.server.HelloService;
import
demo.spring.model.UserInfoBean;
@WebService(endpointInterface
=
"
demo.spring.HelloService
"
)
public
class
HelloServiceImpl
implements
HelloService
{
public
String sayHello(String text)
{
return
"
Hello,
"
.concat(text);
}
public
UserInfoBean getUserInfo(String username)
{
UserInfoBean user
=
new
UserInfoBean();
user.setRealname(
"
捷克
"
);
user.setUsername(username);
user.setEmail(
"
jack@chaina.com
"
);
return
user;
}
public
List
<
UserInfoBean
>
getUsers()
{
List
<
UserInfoBean
>
users
=
new
ArrayList
<
UserInfoBean
>
();
users.add(getUserInfo(
"
john
"
));
return
users;
}
}
三、声明服务Bean
在WEB-INF目录下创建成一个beans.xml文件,以声明endpoint bean:
<?
xml version="1.0" encoding="UTF-8"
?>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws
="http://cxf.apache.org/jaxws"
xsi:schemaLocation
="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
>
<
import
resource
="classpath:META-INF/cxf/cxf.xml"
/>
<
import
resource
="classpath:META-INF/cxf/cxf-extension-soap.xml"
/>
<
import
resource
="classpath:META-INF/cxf/cxf-servlet.xml"
/>
<
jaxws:endpoint
id
="helloService"
implementor
="demo.spring.HelloServiceImpl"
address
="/HelloService"
/>
</
beans
>
若使用Spring定义的bean,也可这样声明:
<
bean
id
="helloService"
class
="demo.spring.HelloServiceImpl"
/>
<
jaxws:endpoint
id
="helloServiceImpl"
implementor
="#helloService"
address
="/HelloService"
/>
四、定义Servlet
修改WEB-INF/目录下的web.xml文件,添加如下定义:
<
context-param
>
<
param-name
>
contextConfigLocation
</
param-name
>
<
param-value
>
WEB-INF/beans.xml
</
param-value
>
</
context-param
>
<
listener
>
<
listener-class
>
org.springframework.web.context.ContextLoaderListener
</
listener-class
>
</
listener
>
<
servlet
>
<
servlet-name
>
CXFServlet
</
servlet-name
>
<
display-name
>
CXF Servlet
</
display-name
>
<
servlet-class
>
org.apache.cxf.transport.servlet.CXFServlet
</
servlet-class
>
<
load-on-startup
>
1
</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
CXFServlet
</
servlet-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
servlet-mapping
>
五、客户端代码
client_beans.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws
="http://cxf.apache.org/jaxws"
xsi:schemaLocation
="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd"
>
<
bean
id
="client"
class
="demo.spring.HelloService"
factory-bean
="clientFactory"
factory-method
="create"
/>
<
bean
id
="clientFactory"
class
="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"
>
<
property
name
="serviceClass"
value
="demo.spring.HelloService"
/>
<
property
name
="address"
value
="http://localhost:8080/cxf/HelloService"
/>
</
bean
>
</
beans
>
client.java
ClassPathXmlApplicationContext context
=
new
ClassPathXmlApplicationContext(
new
String[]
{
"
demo/spring/client/client_beans.xml
"
}
);
HelloService client
=
(HelloService)context.getBean(
"
client
"
);
String response
=
client.sayHello(
"
Joe
"
);
System.out.println(
"
Response:
"
+
response);
UserInfoBean user
=
client.getUserInfo(
"
jack
"
);
System.out.println(user.getUsername());
List
<
UserInfoBean
>
users
=
client.getUsers();
for
(UserInfoBean u : users)
{
System.out.println(u.getUsername());
}
System.exit(
0
);
posted on 2007-11-21 23:21
josson
阅读(631)
评论(0)
编辑
收藏
所属分类:
java 开发
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
基于客户端(浏览器)证书身份认证的方法
Java序列化算法原理
GC垃圾回收机制
通用业务引用查询服务实现
通过Findbugs 找出程序中隐藏的bug
java反编译工具
Eclipse 常用插件.
ibatis 自动生成的主键
项目构建工具之Maven
AXIS快速生成客户端调用文件
<
2007年11月
>
日
一
二
三
四
五
六
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
8
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
Hibernate(2)
java 开发 (31)
Linux(13)
Spring(4)
web开发(20)
即时通讯(2)
大杂烩(15)
数据库(7)
软件设计(2)
问题记录(1)
项目管理(8)
随笔档案
2011年12月 (2)
2011年6月 (1)
2011年5月 (1)
2011年2月 (1)
2011年1月 (3)
2010年12月 (3)
2010年11月 (1)
2010年9月 (1)
2010年7月 (1)
2010年6月 (1)
2010年4月 (3)
2009年11月 (1)
2009年9月 (3)
2009年8月 (1)
2009年7月 (1)
2009年6月 (2)
2009年5月 (1)
2009年3月 (4)
2009年2月 (1)
2009年1月 (1)
2008年12月 (2)
2008年11月 (1)
2008年10月 (1)
2008年9月 (2)
2008年8月 (1)
2008年7月 (3)
2008年6月 (2)
2008年5月 (2)
2008年3月 (2)
2008年1月 (15)
2007年12月 (8)
2007年11月 (15)
2007年7月 (2)
2007年6月 (3)
2007年5月 (7)
2007年4月 (7)
收藏夹
EXT(6)
java 开发(13)
Linux(3)
SWT/JFace(1)
开源(1)
搜索技术(1)
搜索
最新评论
1. re: iframe 高度自适应
1909434428@qq.com
--3a教程
2. re: firefox中证书的使用
thanks
--mroff
3. re: IE7 对话框样式[未登录]
fsdfsdf
--dd
4. re: Debian 修改IP地址或DNS
IP地址配置文件: "/etc/network/interface" 文件少了个s
/etc/network/interfaces
--debian
5. re: dhtmlxTree 使用示例
rt
--tr
阅读排行榜
1. Debian 修改IP地址或DNS(14049)
2. iframe 高度自适应(9292)
3. Linux 抓包分析工具。(8759)
4. dhtmlxTree 使用示例(8339)
5. Mysql 自启动脚本(4782)
评论排行榜
1. DWR Reverse 一些细节(4)
2. DWR 跨域请求(3)
3. Linux启动级别&Samba服务自启动设置(2)
4. iframe 高度自适应(2)
5. Ie 8 的window.open打开新窗口无反应问题。(2)