posts - 66,  comments - 11,  trackbacks - 0
          EJB2.1和web服務
          1、下載安裝服務器后,需要設置環境變量。
          Set J2EE_HOME=J2EE安裝目錄
          Set CLASSPATH 
          =%CLASSPATH%;%J2EE_HOME%\\lib\\j2ee.jar;.
          Set Path =%Path%;%J2EE_HOME%\\bin;.

          2、創建初始目錄
          +HelloBeanService
              +META-INF(application.xml;sun-j2ee-ri.xml )
              +ejb
                 +META-INF(ejb-jar.xml; webservices.xml;mapping.xml)
                 -*.java文件(EJB相關的類)
                 -config.xml
          3、定義web服務接口
          package com.testproject.ejb.web;

          /*
           * Hello服務Endpoint接口
           * 需要注意的是,這里使用的是EJB2.1無狀態會話Bean,它作為WEB服務端點時可以不提供Home接口和Remote
           * Locale接口,它提供的是web服務端點接口,這個接口擴展了Remote接口。
           
          */

          public interface HelloInterface extends java.rmi.Remote {
              
          public String hello()throws java.rmi.RemoteException;
          }


          4、實現服務端點接口
          package com.testproject.ejb.web;

          import java.rmi.RemoteException;

          import javax.ejb.EJBException;
          import javax.ejb.SessionBean;
          import javax.ejb.SessionContext;

          /*
           * 定義了服務端點接口,接下來的任務就是開發無狀態會話Bean。無狀態會話Bean同樣需要實現SessionBean接口,
           * 服務端點接口定義的方法在會話Bean中實現。
           
          */

          public class HelloBean implements SessionBean {
              
              
          public void ejbCreate(){
                  
          /*
                   * 這里不能接收任何參數
                   
          */

              }


              
          public void ejbActivate() throws EJBException, RemoteException {
              }


              
          public void ejbPassivate() throws EJBException, RemoteException {
              }


              
          public void ejbRemove() throws EJBException, RemoteException {
              }


              
          public void setSessionContext(SessionContext arg0) throws EJBException,
                      RemoteException 
          {
              }

              
          /*
               * 業務方法:輸出hello
               
          */

              
          public String hello(){
                  
          return "Hello wyq";
              }


          }


          5、創建EJB描述
          用于部署成Web服務的無狀態會話Bean的描述符和普通的無狀態會話Bean不同ejb-jar.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <ejb-jar version="2.1"
          xmlns
          ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation
          ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
              
          <display-name>HelloBean</display-name>
              
          <enterprise-beans>
                  
          <session>
                      
          <display-name>HelloBean</display-name>
                      
          <ejb-name>HelloBean</ejb-name>
                      
          <service-endpoint>com.testproject.ejb.web.HelloInterface</service-endpoint>
                      
          <ejb-class>com.testproject.ejb.web.HelloBean</ejb-class>
                      
          <session-type>Stateless</session-type>
                      
          <transaction-type>Container</transaction-type>
                  
          </session>
              
          </enterprise-beans>
          </ejb-jar>

          在這個新的部署描述符中,使用<service-endpoint>指定了服務端點,同時,必須指定EJB為無狀態會話Bean
          6、生成WEB服務描述

          下面的任務就是生成一個Web服務描述,我們通常使用工具來生成這個描述符。在這里使用J2EE提供的wscompile工具來生成。在使用wscompile工具生成web服務描述前,首先手工編寫一個簡單的XML描述config.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
              
          <service 
                  
          name="MyHelloBeanService" 
                  targetNamespace
          ="urn:HelloBean" 
                  typeNamespace
          ="urn:HelloBean"
                  packageName
          ="helloBeanService">
                  
          <interface name="com.testproject.ejb.web.HelloInterface"/>
              
          </service>
          </configuration>

          在這個描述中,指定了目標的名稱空間、包的名字和Web服務端點接口:HelloInterface。如下命令就可以生成一個web服務描述

          c:\\ HelloBeanService\\ejb \\>wscompile -define -d . -nd . -classpath . config.xml
          自動生成MyHelloBeanService.wsdl文件。
          7、編寫一個web服務映射文件:
          在ejb\\META-INF目錄下新建一個mapping.xml文件,然后編輯這個描述符
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE java-wsdl-mapping PUBLIC
              "-//IBM Corporation,Inc.//DTD J2EE JAX-RPC mapping 1.0//EN"
              "http://www.ibm.com/standards/xml/webservices/j2ee/j2ee_jaxrpc_mapping_1_0.dtd"
          >
          <java-wsdl-mapping>
              
          <package-mapping>
                  
          <package-type>HelloBeanService</package-type>
                  
          <namespaceURI>urn:HelloBean</namespaceURI>
              
          </package-mapping>
          </java-wsdl-mapping>
          8、編寫webservices.xml文件
          另外,還需要提供webservices.xml文件,并存放到Ejb-jar存檔的META-INF目錄中。各個J2EE產品可能提供相應的部署工具來創建這個文件。
          9、EJB打包
          另外,web服務部署描述符在EJB-JAR文件中的位置是META-INF/webservices.xml.把生成的HelloBeanService.wsdl拷貝到ejb\\META-INF目錄下
          c:\\HelloBeanService\\ejb\\jar cvf ejb.jar com META-INF
          10、Application打包
          HelloBeanService\\MEAT-INF目錄下創建2個文件:application.xml和sun-j2ee-ri.xml
          application.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE application PUBLIC '-//Sun Microsystems,
              Inc.//DTD J2EE Application 1.3//EN'
              'http://java.sun.com/dtd/application_1_3.dtd'
          >
          <application>
              
          <description>Application description</description>
              
          <display-name>HelloBeanServiceApp</display-name>
              
          <module>
                  
          <ejb>ejb.jar</ejb>
              
          </module>
          </application>

          最后歸檔
          c:\\ HelloBeanService\\ejb\\>copy ejb.jar ../
          c:\\ HelloBeanService\\ejb\\>cd..
          c:\\ HelloBeanService\\\\>jar cvf encryptservice.ear ejb.jar META-INF

           


           

          posted on 2009-11-13 16:13 王永慶 閱讀(163) 評論(0)  編輯  收藏 所屬分類: EJB學習筆記
          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關注blogs

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 禄劝| 岳池县| 孝昌县| 屯留县| 丹江口市| 柘荣县| 泰和县| 土默特左旗| 江西省| 江津市| 措勤县| 宽城| 五台县| 崇礼县| 蒙城县| 太湖县| 宁化县| 酒泉市| 通道| 昌乐县| 太康县| 渝北区| 垫江县| 辉南县| 杨浦区| 乾安县| 潼关县| 乌鲁木齐县| 连山| 阳西县| 石屏县| 沂源县| 西林县| 宜城市| 襄垣县| 孙吴县| 孟州市| 四川省| 吴堡县| 和硕县| 获嘉县|