<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大夢想家

    5年開發工程師,2年實施經理,X年售前顧問,......
    數據加載中……
    EJB3下無狀態會話Bean發布為WebService

        無狀態會話Bean發布為WebService是非常有意義的,因為如果我們將每一個EJB模塊按照SOA的思想做成一個一個獨立的服務模塊(這里不討論SCA,我認為Apache的SCA框架還不夠強大,文檔還不夠全面),同樣的代碼在JavaEE體系之內的應用程序可以直接使用EJB3直接訪問,JavaEE體系之外的應用程序可以直接使用WebService訪問,這一點是非常有意義的。

        下面要考慮的就是如何只寫一份代碼,讓它能做兩樣事情。

        網上有大量的使用EJB3發布WebService的教程,但是這些教程都是一個人寫的,基本上沒有太大的參考價值。最重要的是,他寫的元注釋都是寫在實現類上的,接口上沒有做任何描述。這種做法有兩個問題,第一如果你的會話Bean使用了EM,那么麻煩了,JAXB在做綁定的時候不認識接口;第二WSDL文件的描述實際上應該是基于接口的描述,應該和實現類沒有太大的關系。

        看看網上流行的代碼:

     

    1@WebService(name = "PurchaseArrival", serviceName = "PurchaseArrivalService"
    2@SOAPBinding(style = SOAPBinding.Style.RPC) 
    3public class PurchaseArrivalImpl implements IPurchaseArrival {

     

    注意,基于RPC綁定模式下List,Set一類的接口都是不可傳輸的,這點會很麻煩,要用必須用實現類。

    看看我的代碼:

    接口:

     

    1@WebService(name = "ILogRemoteService",targetNamespace = "http://www.glnpu.com/dmp/xml"
    2@SOAPBinding(style = SOAPBinding.Style.DOCUMENT) 
    3public interface  ILogRemoteService {

     

    實現類:

     

    1@Stateless 
    2@Remote(ILogRemoteService.class
    3@WebService(endpointInterface = "com.glnpu.dmp.server.service.base.log.ILogRemoteService",serviceName = "LogRemoteService"
    4public class LogRemoteService extends BaseService implements ILogRemoteService {

     

    這個WebService是針對接口發布出去,而且使用的DOCUMENT樣式,可以直接使用List、Set的接口。

    這個WebService生成的WSDL文件很有意思:

     

     1<definitions name="LogRemoteService" targetNamespace="http://impl.log.base.service.server.dmp.glnpu.com/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://www.glnpu.com/dmp/xml" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://impl.log.base.service.server.dmp.glnpu.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     2
     3<import location="http://127.0.0.1:8080/LogRemoteServiceService/LogRemoteService?wsdl&resource=ILogRemoteService_PortType25057.wsdl" namespace="http://www.glnpu.com/dmp/xml" />
     4
     5<service name="LogRemoteService">
     6
     7<port binding="ns1:ILogRemoteServiceBinding" name="LogRemoteServicePort">
     8
     9<soap:address location="http://127.0.0.1:8080/LogRemoteServiceService/LogRemoteService" />
    10
    11</port>
    12
    13</service>
    14
    15</definitions>
    16
    17

     

    里面有import來指引到真正的WSDL文件。這樣很容易將會話Bean變成WS~一樣的代碼兩樣的功能,超值!



    客戶虐我千百遍,我待客戶如初戀!

    posted on 2009-07-02 13:54 阿南 閱讀(1946) 評論(0)  編輯  收藏 所屬分類: EJB3個人原創

    主站蜘蛛池模板: 亚洲阿v天堂在线2017免费| 99久久免费国产精品特黄| 亚洲一区二区三区首页| 日本妇人成熟免费中文字幕| 亚洲av无码专区国产不乱码| 国产亚洲?V无码?V男人的天堂 | 午夜私人影院免费体验区| 免费播放国产性色生活片| 亚洲国产精品自在线一区二区 | 日韩电影免费在线观看| 亚洲色精品VR一区区三区| 亚洲国产av无码精品| 最近中文字幕电影大全免费版| 亚洲成aⅴ人片久青草影院按摩| 亚洲色中文字幕无码AV| 成年18网站免费视频网站| 国产又黄又爽又大的免费视频| 亚洲国产综合精品中文第一| 亚洲中文字幕无码一区| 成全影视免费观看大全二| 精品视频一区二区三区免费| 亚洲码欧美码一区二区三区| 亚洲av色影在线| 亚洲国产小视频精品久久久三级 | 无码乱人伦一区二区亚洲一| 国产精品久久免费视频| 久久久久久精品成人免费图片 | 国产成人无码区免费A∨视频网站| 毛片在线播放免费观看| 无码亚洲成a人在线观看| 亚洲精品在线播放视频| 日韩一卡2卡3卡4卡新区亚洲| 成人性生免费视频| 88av免费观看| 久久精品视频免费| 人妻无码中文字幕免费视频蜜桃| 国产成人精品日本亚洲专一区 | 女同免费毛片在线播放| 日产久久强奸免费的看| 亚洲狠狠色丁香婷婷综合| 亚洲高清无在码在线电影不卡|