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
閱讀(640)
評論(0)
編輯
收藏
所屬分類:
java 開發
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
基于客戶端(瀏覽器)證書身份認證的方法
Java序列化算法原理
GC垃圾回收機制
通用業務引用查詢服務實現
通過Findbugs 找出程序中隱藏的bug
java反編譯工具
Eclipse 常用插件.
ibatis 自動生成的主鍵
項目構建工具之Maven
AXIS快速生成客戶端調用文件
Copyright ©2025 josson Powered by:
博客園
模板提供:
滬江博客
<
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(14092)
2.?iframe 高度自適應(9316)
3.?Linux 抓包分析工具。(8772)
4.?dhtmlxTree 使用示例(8357)
5.?Mysql 自啟動腳本(4792)
評論排行榜
1.?DWR Reverse 一些細節(4)
2.?DWR 跨域請求(3)
3.?Linux啟動級別&Samba服務自啟動設置(2)
4.?iframe 高度自適應(2)
5.?Ie 8 的window.open打開新窗口無反應問題。(2)
主站蜘蛛池模板:
安溪县
|
海淀区
|
大名县
|
奉化市
|
康平县
|
油尖旺区
|
黄山市
|
桃园市
|
时尚
|
鄂尔多斯市
|
化州市
|
华宁县
|
恭城
|
朝阳区
|
新平
|
乌鲁木齐县
|
满洲里市
|
宁武县
|
祁连县
|
双峰县
|
信阳市
|
交口县
|
通渭县
|
普定县
|
桐庐县
|
尼勒克县
|
安宁市
|
乌拉特后旗
|
兴和县
|
合江县
|
布尔津县
|
巫山县
|
大埔区
|
交城县
|
漳州市
|
防城港市
|
和平区
|
兰坪
|
伊宁县
|
泉州市
|
上杭县
|