<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個人原創

    主站蜘蛛池模板: 国产亚洲精品成人a v小说| 最近2019中文字幕免费直播| 噜噜综合亚洲AV中文无码| 亚洲制服丝袜在线播放| 亚洲黄色一级毛片| 97se亚洲综合在线| 亚洲精品第五页中文字幕| 4444亚洲国产成人精品| 在线电影你懂的亚洲| 亚洲妓女综合网99| 亚洲精品免费网站| 亚洲AV无码一区二区三区性色 | 亚洲成AV人在线观看网址| 伊人久久亚洲综合影院| 亚洲国产一级在线观看| 国产精品亚洲综合一区| 亚洲人成色77777| 亚洲AV日韩AV永久无码久久| 亚洲最新永久在线观看| 亚洲国产美女精品久久久久| 亚洲 欧洲 视频 伦小说| 国产偷国产偷亚洲高清人| 日本免费精品一区二区三区 | 亚洲欧美日韩中文字幕一区二区三区| 亚洲精品亚洲人成在线| 精品久久久久亚洲| 狠狠躁狠狠爱免费视频无码| 日本三级在线观看免费| 亚洲黄色免费电影| 在线免费观看a级片| 亚洲国产精品日韩| 久久亚洲国产精品五月天| 亚洲另类图片另类电影| 亚洲av无码成人精品国产| 国产99视频精品免费视频76| 久久综合国产乱子伦精品免费| 成年女人免费视频播放体验区| 亚洲Aⅴ无码一区二区二三区软件| 中文字幕亚洲图片| 亚洲午夜一区二区电影院| 国产偷国产偷亚洲高清人|