我愛佳娃
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,不能進行其它命令操作
搜索
積分與排名
積分 - 552434
排名 - 88
最新評論
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――誰用誰知道!(45463)
2.?SPRING循環依賴(circular reference)的解決方法(38414)
3.?Join用法,HQL的方法,Hibernate中的fetch(33587)
4.?天生一對"Maven2+Jetty" -- Maven2創建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中調試(25818)
5.?目前發現的最好最快的直接在ECLIPSE中JETTY調試方式(19654)
評論排行榜
1.?用OpenSSL做自簽名的證書(14)
2.?感觸最深的幾條設計哲學(12)
3.?SPRING循環依賴(circular reference)的解決方法(11)
4.?《紅樓夢》作曲王立平語(11)
5.?用PowerDesigner生成Hibernate映射文件的步驟(11)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 我愛佳娃
主站蜘蛛池模板:
亚洲第一二三四区
|
91精品国产免费久久国语蜜臀
|
免费看又爽又黄禁片视频1000
|
亚洲最大视频网站
|
亚洲精品免费视频
|
日本亚洲视频在线
|
羞羞视频免费网站在线看
|
亚洲国产成人久久综合碰
|
日韩色日韩视频亚洲网站
|
永久免费av无码网站大全
|
亚洲国产乱码最新视频
|
嫖丰满老熟妇AAAA片免费看
|
亚洲美女aⅴ久久久91
|
日韩精品人妻系列无码专区免费
|
国产精品国产亚洲精品看不卡
|
国产精品免费大片一区二区
|
亚洲性久久久影院
|
一级毛片a女人刺激视频免费
|
亚洲精品动漫人成3d在线
|
成人a毛片视频免费看
|
一级毛片直播亚洲
|
日本免费精品一区二区三区
|
久久免费线看线看
|
亚洲熟妇av一区二区三区漫画
|
a级毛片免费网站
|
国产亚洲精品无码拍拍拍色欲
|
fc2成年免费共享视频网站
|
亚洲欧洲日产国码一级毛片
|
日本高清免费不卡在线
|
日本亚洲欧美色视频在线播放
|
日本免费人成视频播放
|
最新亚洲人成无码网站
|
亚洲成人一区二区
|
国产精品美女免费视频观看
|
亚洲精品白浆高清久久久久久
|
国产一区二区三区免费观看在线
|
亚洲αv在线精品糸列
|
污污网站18禁在线永久免费观看
|
久久亚洲精品无码VA大香大香
|
91短视频免费在线观看
|
亚洲免费在线视频观看
|