我愛佳娃
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 我愛佳娃
主站蜘蛛池模板:
亚洲 暴爽 AV人人爽日日碰
|
久久久久无码精品亚洲日韩
|
中文字幕亚洲综合久久男男
|
高潮内射免费看片
|
国产免费无遮挡精品视频
|
亚洲av中文无码乱人伦在线观看
|
在线成人a毛片免费播放
|
亚洲三级在线播放
|
大地资源在线观看免费高清
|
亚洲娇小性xxxx色
|
无码视频免费一区二三区
|
亚洲AV无码AV日韩AV网站
|
日本成人在线免费观看
|
精品亚洲成a人在线观看
|
亚洲成网777777国产精品
|
一本到卡二卡三卡免费高
|
亚洲啪啪AV无码片
|
57pao一国产成视频永久免费
|
亚洲国产高清视频在线观看
|
在人线av无码免费高潮喷水
|
亚洲中文字幕AV每天更新
|
免费一级特黄特色大片在线
|
久久最新免费视频
|
99久久亚洲综合精品成人网
|
最近免费中文字幕大全视频
|
色吊丝免费观看网站
|
亚洲伊人久久精品影院
|
3344免费播放观看视频
|
亚洲中文字幕乱码熟女在线
|
国产免费私拍一区二区三区
|
xxxx日本在线播放免费不卡
|
亚洲高清无在码在线无弹窗
|
亚洲av无码片在线观看
|
免费永久看黄在线观看app
|
丝袜足液精子免费视频
|
亚洲一级在线观看
|
亚洲一区精品伊人久久伊人
|
久久综合国产乱子伦精品免费
|
久久亚洲国产成人影院
|
亚洲中文字幕不卡无码
|
在线精品一卡乱码免费
|