我愛佳娃
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-124 評論-194 文章-0 trackbacks-0
CXF:咋總差一點呢?
最近想用PERL通過SOAP與JAVA通信,想到了XFIRE,現在叫CXF提供的服務。但總是差一點成功。
第一步,
由于用了SPRING,所以最先看了這篇文章:
Writing a service with Spring
服務是建成功了,PERL和JAVA是可以正常通信了,詳見
上篇文章
可是CXF自己的CLIENT生成代碼卻訪問“自定義結構數組”的函數不成功:
public List<DeviceValue> sendAlarmArr (List<DeviceValue> arr);
第二步,
左試右試不成功,甚至去試了Axis2,但那個生成的WSDL把上面的結構變成AnyType,估計不對。
又回來,看了
Aegis綁定
,我還找到將它用到SPRING里的方法:
<
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"
/>
<
bean
id
="serviceClass"
class
="com.exchangebit.nms.magic.NotifyServiceImpl"
/>
<
bean
id
="aegisDatabinding"
class
="org.apache.cxf.aegis.databinding.AegisDatabinding"
/>
<
bean
id
="serviceFactory"
class
="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"
>
<
property
name
="dataBinding"
ref
="aegisDatabinding"
/>
</
bean
>
<
bean
id
="serverBeanFactory"
class
="org.apache.cxf.frontend.ServerFactoryBean"
init-method
="create"
>
<
property
name
="address"
value
="/NotifyService"
/>
<
property
name
="bindingId"
value
="http://schemas.xmlsoap.org/soap/"
/>
<
property
name
="serviceBean"
ref
="serviceClass"
/>
<
property
name
="serviceFactory"
ref
="serviceFactory"
/>
</
bean
>
<
jaxws:endpoint
id
="notifyService"
implementor
="com.exchangebit.nms.magic.NotifyServiceImpl"
address
="/NotifyService"
>
<!--
jaxws:serviceFactory>
<ref bean="serviceFactory"/>
</jaxws:serviceFactory
-->
</
jaxws:endpoint
>
</
beans
>
其實,跟前一種JAX-WS的方式轉換非常簡單,把其中的注釋去掉就是Aegis綁定,注釋掉就是JAX-WS。
客戶端沒有在SPRING里試成功,但寫代碼也相當簡單,Aegis真好:
getBean (
"
notifyClient
"
);
ClientProxyFactoryBean factory
=
new
ClientProxyFactoryBean();
factory.setServiceClass(NotifyService.
class
);
factory.setAddress(
"
http://127.0.0.1:8080/ebnms/NotifyService
"
);
factory.getServiceFactory().setDataBinding(
new
AegisDatabinding());
NotifyService client
=
(NotifyService) factory.create();
DoTest (client);
這次,到是CXF的SERVER和CLIENT都可以正常通信了。但我不說也知道啦,PERL又出問題了!
第三步,
又進一步搜,才知道Document, Literal, RPC, Encoding對SOAP消息的影響,
這篇文章
(
中文的
)相當好!
大義是RPC/Encoding將方法名稱放入了operation節中,并且消息里含有類型信息,不方便檢驗。
而Document/Literal通過增加WSDL復雜度,將方法名、參數類型全部放入了types一節,方便了處理。
而SOAP::Lite只支持RPC/Encoding的方式,但也有辦法讓它形成Doc/Lit的消息:
點這里
。
但,這種方法只支持JAX-WS的服務,Aegis的PERL就會出錯了。
所以,不管用哪種要么JAVA的CLIENT和SERVER通信有問題,不然就是把PERL拒之門外。我懷疑是不是CXF的JAX-WS的數組處理有問題,不然Aegis為何不出錯?另外,Aegis對PERL的消息不夠寬容,本已是Doc/Lit格式,只是帶有TYPE信息也會出錯。
不知如何解,先記在此,以后回過頭來再研究了。
posted on 2007-08-07 21:39
我愛佳娃
閱讀(2920)
評論(1)
編輯
收藏
所屬分類:
Perl
、
web技術
評論:
#
re: CXF:咋總差一點呢?
2011-05-10 22:58 |
lty
請問您cxf返回復雜類型怎么做呢?
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
一目了然PERL編碼,是轉的
perl不用export,自動加入自己的搜索和動態鏈接庫環境
哭了:整一天Java Runtime exec的掛死(不退出)問題,原來是醬子
PERL通過CPAN和PROXY來安裝
do/eval/requir區別
PAR和PP
ACTIVEPERL在LINUX下的安裝以及PERL2EXE的使用
一種不需要WSDL用CXF(原XFIRE)訪問PERL(SOAP::Lite)編寫的WEB SERVICE
PERL中遇到Your vendor has not defined Fcntl macro F_GETFL解決方法
CXF:咋總差一點呢? (續:已解決)
<
2007年8月
>
日
一
二
三
四
五
六
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
31
1
2
3
4
5
6
7
8
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(19)
給我留言
查看公開留言
查看私人留言
隨筆分類
(134)
ActiveMQ(1)
AJAX(10)
DB相關(6)
Hibernate(6)
javascript(5)
JAVA基礎(8)
MAC(4)
maven(3)
Perl(15)
Spring(4)
SSL(5)
web技術(7)
歲月留情(3)
工具使用(16)
開源庫(1)
服務配置(23)
正則表達式(1)
系統設計(4)
網管(7)
自寫類庫(1)
記事(4)
隨筆檔案
(123)
2021年3月 (1)
2020年1月 (1)
2012年12月 (2)
2012年11月 (1)
2012年9月 (1)
2012年8月 (1)
2011年10月 (3)
2011年9月 (2)
2011年7月 (2)
2011年6月 (1)
2011年2月 (1)
2010年5月 (1)
2010年4月 (2)
2010年3月 (1)
2009年9月 (1)
2009年7月 (1)
2009年6月 (1)
2009年5月 (2)
2009年4月 (1)
2009年3月 (2)
2009年2月 (2)
2008年12月 (1)
2008年11月 (1)
2008年10月 (1)
2008年9月 (2)
2008年8月 (2)
2008年7月 (1)
2008年6月 (4)
2008年5月 (5)
2008年3月 (2)
2008年2月 (3)
2008年1月 (1)
2007年12月 (3)
2007年11月 (9)
2007年10月 (3)
2007年9月 (5)
2007年8月 (6)
2007年7月 (6)
2007年6月 (9)
2007年5月 (7)
2007年4月 (6)
2007年3月 (3)
2007年1月 (2)
2006年12月 (6)
2006年11月 (4)
2005年11月 (1)
我的博客
我的愛好博客
最新隨筆
1.?我用過的機械鍵盤
2.?爆米花A410更新及通過NFS點播mac資源
3.?livestatus在MAC下的編譯
4.?CAS多點登陸之“非主流”配置方式
5.?轉的:果然是5分鐘配成TOMCAT使用SSL(https)
6.?如何在extjs的PANEL里用d3.js來繪圖
7.?MAC 10.8 安裝 MYSQL
8.?一目了然PERL編碼,是轉的
9.?perl不用export,自動加入自己的搜索和動態鏈接庫環境
10.?4.8以上SSHD配置特定用戶只能在特定目錄SFTP,不能進行其它命令操作
搜索
積分與排名
積分 - 552725
排名 - 89
最新評論
1.?re: 在spring中實現rmi回調(callback)功能
這算個毛線回調
--wwar
2.?re: CAS多點登陸之“非主流”配置方式[未登錄]
感謝感謝!!
--Jack
3.?re: 哭了:整一天Java Runtime exec的掛死(不退出)問題,原來是醬子[未登錄]
原來是這樣,多謝樓主
--123
4.?re: SPRING循環依賴(circular reference)的解決方法
謝謝,加上 lazy-init="true"問題解決了
--liabco
5.?re: DWR Reverse Ajax功能實踐的要點
logger.info ("WebContext1"+servletContext);得到的值為空啊
--zwl
閱讀排行榜
1.?Mylyn――誰用誰知道!(45465)
2.?SPRING循環依賴(circular reference)的解決方法(38419)
3.?Join用法,HQL的方法,Hibernate中的fetch(33591)
4.?天生一對"Maven2+Jetty" -- Maven2創建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中調試(25819)
5.?目前發現的最好最快的直接在ECLIPSE中JETTY調試方式(19657)
評論排行榜
1.?用OpenSSL做自簽名的證書(14)
2.?感觸最深的幾條設計哲學(12)
3.?SPRING循環依賴(circular reference)的解決方法(11)
4.?《紅樓夢》作曲王立平語(11)
5.?用PowerDesigner生成Hibernate映射文件的步驟(11)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 我愛佳娃
主站蜘蛛池模板:
曰曰鲁夜夜免费播放视频
|
国产一卡二卡3卡四卡免费
|
成人免费区一区二区三区
|
一个人看的免费高清视频日本
|
久久久久久亚洲av无码蜜芽
|
亚洲精品无码专区
|
亚洲人成色777777老人头
|
亚洲xxxx18
|
亚洲乱色熟女一区二区三区蜜臀
|
亚洲中文字幕久久精品无码A
|
亚洲一区二区女搞男
|
国产亚洲情侣一区二区无码AV
|
亚洲精品岛国片在线观看
|
亚洲伊人久久综合影院
|
国产成人A亚洲精V品无码
|
亚洲精品自在在线观看
|
久久亚洲国产视频
|
亚洲国产韩国一区二区
|
狠狠色香婷婷久久亚洲精品
|
亚洲日韩国产一区二区三区在线
|
亚洲精品国产suv一区88
|
色妞www精品视频免费看
|
国产免费久久精品99久久
|
免费人成在线观看网站
|
97碰公开在线观看免费视频
|
最近2019中文字幕mv免费看
|
国产成人免费福利网站
|
国产精品亚洲玖玖玖在线观看
|
亚洲AV永久无码精品成人
|
国产一区在线观看免费
|
国产成人精品日本亚洲专区
|
亚洲AV无码久久精品色欲
|
亚洲精品第一国产综合精品
|
亚洲人成电影网站免费
|
九九视频高清视频免费观看
|
免费无码H肉动漫在线观看麻豆
|
亚洲精品国产免费
|
精品无码国产污污污免费
|
亚洲日韩涩涩成人午夜私人影院
|
亚洲国产综合专区电影在线
|
国产成人亚洲综合网站不卡
|