青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

cc

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  38 隨筆 :: 14 文章 :: 21 評論 :: 0 Trackbacks
文章分類:Java編程
對于初學像我這樣初學EJB的菜鳥來講,EJB的配置是一件非常繁瑣的事情,不堪回首啊。呵呵,今天終于明白了昨天晚上遇到的一個白癡錯誤,所以將一個簡單的例子寫下來。
我這個例子的前提是EJB已經發布成功,在servlet中對已經發布的EJB的調用。
首先已要做的就是將已發布的EJB組件的jar文件拷貝到當前Web工程的lib下,其目錄結構為:
EJB端:
    EJBFolderName
          |
          |------classes 
          |            |
          |            |-------hello
          |            |           |---------hello.class   //Remote
          |            |           |---------helloHome.class   //Home
          |            |           | ---------helloBean.class  //Bean
          |            |
          |            |--------META-INF
          |                           |------ejb-jar.xml  //EJB配置文件
            |                           |------MANIFEST.MF  //Manifest-Version: 1.0  Class-Path:
          | 
          |-----------src
                       |
                       |-------hello
                       |           |---------hello.java    //Remote
                       |           |---------helloHome.java    //Home
                       |           | ---------helloBean.java  //Bean
                       |
                       |--------META-INF
                                     |----ejb-jar.xml //servlet配置文件
                                     |-----MANIFEST.MF  //Manifest-Version: 1.0  Class-Path:

servlete端:
ServletFolderName
          |
          |----------src
          |            |-------hello
          |            |          |--------TestEJB.java  //被Servlet(只為目標清晰,也可直接寫到Servlet內)
          |            |
          |            |-------TestEJBServlet.java  //一個Servlet  調用 包hello 中的方法。
          |
          |
          |----------WebRoot

                           |----------META-INF
                           |                  |--------MANIFEST.MF    //Manifest-Version: 1.0       Class-Path:
                           |
                           |----------WEB-INF
                                            |----------classes
                                            |               |-----------TestEJBServlet.class
                                            |               |
                                            |               | -----------hello                                              |                               |----------TestEJB.class
                                            |-----------lib              
                                            |            |----------FirstEJB.jar   //EJB打好的一個Jar包!EJB2.0不可缺少  

                                            |                           
                                            |------------web.xml   //Servlet配置文件             

基本文件結構就是這樣。結束!         

*/下面是針對每個文件的詳細說明://首先是Servlet端,Servlet有一個servlet文件,實現doGet方法和doPost方法,還有一個Servlet配置文件 web.xml
//TestEJBServlet.java:
Java代碼 復制代碼
  1. import java.io.IOException;   
  2.   
  3.   
  4.   
  5. import javax.servlet.ServletException;   
  6.   
  7. import javax.servlet.http.HttpServlet;   
  8.   
  9. import javax.servlet.http.HttpServletRequest;   
  10.   
  11. import javax.servlet.http.HttpServletResponse;   
  12.   
  13.   
  14.   
  15. import hello.TestEJB;   
  16.   
  17. public class TestEJBServlet extends HttpServlet {   
  18.   
  19.   
  20.   
  21.     protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {   
  22.   
  23.         this.doPost(request,response);  //直接以頁面的形式調用Servlet 調用的事doGet方法,   
  24.   
  25.                                                                                             //也可以直接在doGet方法中調用EJB   
  26.   
  27.     }   
  28.   
  29.          public void doPost(HttpServletRequest request, HttpServletResponse response){   
  30.   
  31.                 try{   
  32.   
  33.             new TestEJB("iiop://localhost:2809/").test();  //調用 TestEJB.java 中的test()方法。   
  34.   
  35.         } catch(Exception e){   
  36.   
  37.             e.printStackTrace();   
  38.   
  39.         }   
  40.   
  41.   
  42.   
  43.           }   
  44.   
  45. }  



//TestEJB.java:
Java代碼 復制代碼
  1. package hello;   
  2.   
  3. import javax.naming.Context;   
  4.   
  5. import java.util.Properties;   
  6.   
  7. import javax.naming.NamingException;   
  8.   
  9. import javax.naming.InitialContext;   
  10.   
  11. import javax.rmi.PortableRemoteObject;   
  12.   
  13. import java.rmi.RemoteException;   
  14.   
  15. import javax.ejb.CreateException;   
  16.   
  17. public class TestEJB {   
  18.   
  19.     private static final String JNDI_NAME = "HelloEJB";  //EJB上傳websphere時用的JNDI Name   
  20.   
  21.     private String url;   
  22.   
  23.     private HelloHome home;   
  24.   
  25.     public TestEJB(String url) throws NamingException{   
  26.   
  27.         this.url = url;   
  28.   
  29.         home = lookUpHome();   
  30.   
  31.     }   
  32.   
  33.     private Context getInitialContext() throws NamingException {   
  34.   
  35.         Properties prop = new Properties();   
  36.   
  37.        prop.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");   
  38.   
  39.         prop.put(Context.PROVIDER_URL, url);   
  40.   
  41.         return new InitialContext(prop);   
  42.   
  43.     }   
  44.   
  45.     private HelloHome lookUpHome() throws NamingException{   
  46.   
  47.         Context ctx = getInitialContext();   
  48.   
  49.         Object home = ctx.lookup(JNDI_NAME);   
  50.   
  51.         return (HelloHome)PortableRemoteObject.narrow(home,HelloHome.class);   
  52.   
  53.     }   
  54.   
  55.     public void test() throws RemoteException,CreateException,NamingException {   
  56.   
  57.         Hello hello = (Hello)PortableRemoteObject.narrow(home.create(),Hello.class);   
  58.   
  59.         System.out.println(hello.sayHello());   
  60.   
  61.     }   
  62.   
  63.     /*public static void main(String args[]) throws Exception{  
  64.  
  65.         try{  
  66.  
  67.         new TestEJB("iiop://localhost:2809/").test();  
  68.  
  69.         }catch(Exception e){  
  70.  
  71.             e.printStackTrace();  
  72.  
  73.         }  
  74.  
  75.     }*/  
  76.   
  77. }  


//Servlet 配置文件 web.xml
Xml代碼 復制代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <web-app version="2.4"    
  4.   
  5.     xmlns="http://java.sun.com/xml/ns/j2ee"    
  6.   
  7.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  8.   
  9.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
  10.   
  11.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  12.   
  13.     <servlet>  
  14.   
  15.         <servlet-name>TestEJB</servlet-name>      
  16.   
  17.         <servlet-class>TestEJBServlet</servlet-class>    
  18.   
  19.     </servlet>  
  20.   
  21.     <servlet-mapping>  
  22.   
  23.         <servlet-name>TestEJBServlet</servlet-name>  //Servlet映射到web服務器上的名字   
  24.   
  25.         <url-pattern>/servlet/TestEJBServlet</url-pattern>//Servlet映射到web服務器上的路徑   
  26.   
  27.     </servlet-mapping>  
  28.   
  29.   <welcome-file-list>  
  30.   
  31.     <welcome-file>index.jsp</welcome-file>//默認開始頁面(可有可無)   
  32.   
  33.   </welcome-file-list>  
  34.   
  35. </web-app>  


接下來是EJB端:三個java文件(Home.java,Remote.java,Bean.java)和一個ejb-jar配置文件
helloHome.java(就是Home.java  本地接口)
Java代碼 復制代碼
  1. package hello;   
  2.   
  3. import java.rmi.RemoteException;   
  4.   
  5. import javax.ejb.CreateException;   
  6.   
  7. import javax.ejb.EJBHome;   
  8.   
  9.   
  10. public interface HelloHome extends EJBHome {   
  11.   
  12.     public Hello create()throws CreateException,RemoteException;   
  13.   
  14. }  


hello.java(就是Remote.java  遠程接口)
Java代碼 復制代碼
  1. package hello;   
  2. import java.rmi.RemoteException;   
  3. import javax.ejb.EJBObject;   
  4.   
  5. public interface Hello extends EJBObject {   
  6.   
  7.     public String sayHello()throws RemoteException;   
  8.   
  9. }  


helloBean.java(就是Bean.java 實現類)
Java代碼 復制代碼
  1. package hello;   
  2. import java.rmi.RemoteException;   
  3.   
  4. import javax.ejb.EJBException;   
  5.   
  6. import javax.ejb.CreateException;   
  7.   
  8. import javax.ejb.SessionBean;   
  9.   
  10. import javax.ejb.SessionContext;   
  11.   
  12. public class HelloBean implements SessionBean {   
  13.   
  14.     private SessionContext ctx;   
  15.   
  16.     private String words ;   
  17.   
  18.     public String sayHello(){   
  19.   
  20.         System.out.println("i am in an EJB server."+words);   
  21.   
  22.         return words;   
  23.   
  24.     }   
  25.   
  26.     public void ejbCreate() throws CreateException{   
  27.   
  28.         this.words = "hello world";   
  29.     }   
  30.     public void ejbActivate() throws EJBException, RemoteException {   
  31.   
  32.         // TODO Auto-generated method stub   
  33.     }   
  34.   
  35.     public void ejbPassivate() throws EJBException, RemoteException {   
  36.   
  37.         // TODO Auto-generated method stub   
  38.     }   
  39.   
  40.     public void ejbRemove() throws EJBException, RemoteException {   
  41.   
  42.         // TODO Auto-generated method stub   
  43.     }   
  44.   
  45.   
  46.   
  47.     public void setSessionContext(SessionContext arg0) throws EJBException,   
  48.   
  49.             RemoteException {   
  50.         this.ctx = arg0;   
  51.     }   
  52. }  


還有一個配置文件ejb-jar.xml
Xml代碼 復制代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">  
  4.   
  5. <ejb-jar>  
  6.   
  7.     <display-name>HelloEjb</display-name>  
  8.   
  9.     <enterprise-beans>  
  10.   
  11.         <session>  
  12.   
  13.             <ejb-name>FirstEJB</ejb-name>  
  14.   
  15.             <home>hello.HelloHome</home>  
  16.   
  17.             <remote>hello.Hello</remote>  
  18.   
  19.             <ejb-class>hello.HelloBean</ejb-class>  
  20.   
  21.             <session-type>Stateless</session-type>  
  22.   
  23.             <transaction-type>Container</transaction-type>  
  24.   
  25.         </session>  
  26.   
  27.     </enterprise-beans>  
  28.   
  29.     <assembly-descriptor>  
  30.   
  31.         <container-transaction>  
  32.   
  33.             <method>  
  34.   
  35.                 <ejb-name>FirstEJB</ejb-name>  
  36.   
  37.                 <method-intf>Remote</method-intf>  
  38.   
  39.                 <method-name>*</method-name>  
  40.   
  41.             </method>  
  42.   
  43.             <trans-attribute>Required</trans-attribute>  
  44.   
  45.         </container-transaction>  
  46.   
  47.     </assembly-descriptor>  
  48.   
  49. </ejb-jar>  

最后還想說一下對EJB的調用的集中方式,主要有三種:
1、用property幫助設置環境
Java代碼 復制代碼
  1. Properties properties = System.getProperties();   
  2.                
  3.             properties.put(Context.PROVIDER_URL, "iiop://localhost:2809");   
  4.             properties.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");   
  5.             Context ctx = new InitialContext(properties);  

2、用Hashtable幫助設置環境
Java代碼 復制代碼
  1. Hashtable environment = new Hashtable();   
  2.   
  3.             environment.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");   
  4.   
  5.             environment.put(Context.PROVIDER_URL, "iiop://localhost:2809");  //可選,同“corbaloc:iiop:localhost:2809”的效果一樣。   
  6.   
  7.             Context ctx= new InitialContext(environment);  

3、WAS默認的方法
Java代碼 復制代碼
  1. Context ctx = new InitialContext();   
  2.         Object ref = ctx.lookup("ejb/TestEJB");   
  3.         TestEJBHome home = (TestEJBHome) PortableRemoteObject.narrow(ref,   TestEJBHome.class);   
  4.            
  5.         testinst = home.create();   
  6.         arg1.getWriter().println(testinst.testEJB());   
  7.         System.out.println(testinst.testEJB());  
posted on 2010-01-14 17:00 醒目西西 閱讀(1773) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区二区三区日韩欧美| 一本色道久久综合精品竹菊| 99精品国产在热久久婷婷| 亚洲调教视频在线观看| 亚洲成人资源网| 国语对白精品一区二区| 亚洲精品一区二区三区四区高清 | 欧美一二三视频| 免费成人高清视频| 亚洲国产精品久久久久秋霞蜜臀 | 国产精品美女主播| 亚洲国产一成人久久精品| 亚洲福利免费| 久久久久久电影| 99精品欧美一区二区三区| 亚洲综合日韩在线| 国产午夜精品久久| 亚洲自拍三区| 亚洲裸体视频| 99热精品在线| 亚洲精品欧美精品| 欧美成熟视频| 在线视频免费在线观看一区二区| 99ri日韩精品视频| 亚洲人成高清| 久久国产精品99国产| 精品动漫3d一区二区三区免费版| 欧美在线在线| 久久久爽爽爽美女图片| 亚洲精品一区二区三区av| 国产视频一区三区| 在线视频欧美日韩精品| 一区视频在线播放| 亚洲欧美变态国产另类| 欧美日韩国产综合久久| 久久综合激情| 国产精品视区| 久久美女性网| 狠狠综合久久av一区二区老牛| 午夜精品久久久久| 你懂的一区二区| 亚洲精品国产欧美| 国产麻豆精品久久一二三| 亚洲亚洲精品在线观看| 欧美体内she精视频| 99re6这里只有精品视频在线观看| 韩国av一区二区三区在线观看| 香蕉成人久久| 欧美日韩三级视频| 一个色综合导航| 亚洲精选视频在线| 欧美黑人多人双交| 欧美日韩国产一区精品一区| 亚洲国产视频a| 欧美不卡视频| 亚洲天堂av电影| 中日韩高清电影网| 亚洲在线国产日韩欧美| 午夜免费电影一区在线观看| 欧美亚洲免费在线| 久久成人18免费观看| 欧美一区二区三区视频免费播放| 欧美高清免费| 91久久在线视频| 亚洲欧美制服中文字幕| 日韩视频二区| 欧美—级高清免费播放| 揄拍成人国产精品视频| 久久精品免费| 亚洲国产欧美日韩| 欧美在线免费看| 欧美日韩福利视频| 亚洲美女av在线播放| 一本色道久久综合亚洲精品按摩| 国产午夜精品理论片a级大结局| 欧美在线播放| 亚洲精品国产精品国自产在线 | 亚洲一区成人| 亚洲日本电影| 老司机免费视频一区二区| 麻豆成人在线播放| 国产亚洲午夜高清国产拍精品| 欧美日韩视频在线一区二区观看视频 | 久久中文精品| 伊人蜜桃色噜噜激情综合| 亚洲大胆人体在线| 亚洲人妖在线| 亚洲丶国产丶欧美一区二区三区 | 亚洲视频在线二区| 欧美国产高清| 永久555www成人免费| 免费不卡在线视频| 欧美激情中文不卡| 久久国产精品色婷婷| 久久乐国产精品| 午夜天堂精品久久久久| 免费亚洲电影| 欧美在线影院| 国产精品video| 亚洲国内在线| 午夜精品久久久久久久白皮肤 | 欧美成人一区二区三区在线观看| 美女91精品| 欧美三级在线播放| 一区二区久久久久久| 国产精品国产三级国产aⅴ浪潮| 欧美一区二区三区久久精品茉莉花 | 亚洲国产精品一区二区尤物区| 狠狠色狠狠色综合日日91app| 久久免费视频网| 国产亚洲精品资源在线26u| 亚洲欧美激情精品一区二区| 国产一区二区无遮挡| 欧美一级淫片aaaaaaa视频| 激情成人亚洲| 久热国产精品| 久久蜜臀精品av| 欧美精品成人91久久久久久久| 一二三区精品| 欧美激情亚洲视频| 日韩系列欧美系列| 亚洲欧美电影在线观看| 国产精品va在线播放| 亚洲尤物精选| 午夜日韩电影| 一本色道久久综合精品竹菊 | 国产色视频一区| 午夜国产一区| 一区二区三区高清在线观看| 欧美日韩国产三区| 老**午夜毛片一区二区三区| 欧美激情亚洲激情| 国产精品女人毛片| 久久精品一二三| 欧美激情aⅴ一区二区三区| 亚洲成人在线视频网站| 欧美黄色免费| 久久综合九色| 狂野欧美激情性xxxx| 久久久久久伊人| 亚洲欧美视频一区| 一区二区欧美在线| 亚洲毛片在线观看| 性视频1819p久久| 久久久精品久久久久| 在线亚洲免费视频| 一区二区在线看| 99re成人精品视频| 亚洲欧美怡红院| 久久久久久久久久久久久女国产乱 | 国产一区二区三区直播精品电影 | 久久免费视频这里只有精品| 国产日韩精品视频一区二区三区| 国产在线拍揄自揄视频不卡99 | 欧美一区二区私人影院日本 | 亚洲精品视频在线看| 国产精品嫩草99a| 欧美日韩国产在线播放网站| 欧美精品一区在线| 欧美视频一区二区三区| 欧美v亚洲v综合ⅴ国产v| 久久久久欧美| 亚洲图片在线| 欧美一区二区三区精品| 久久精品视频99| 欧美在线视频免费观看| 免费观看一区| 狠狠色2019综合网| 欧美一区二区三区免费观看| 久久久久久久999| 久久av一区二区| 你懂的国产精品| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲影院免费观看| 亚洲一级片在线观看| 欧美日韩国产亚洲一区| 亚洲国产午夜| 欧美激情亚洲另类| 欧美成人免费在线| 亚洲国产经典视频| 亚洲美女精品久久| 最新亚洲激情| 久久久亚洲一区| 久久亚洲私人国产精品va媚药| 午夜在线电影亚洲一区| 欧美成人在线免费视频| 久久婷婷av| 国模精品一区二区三区| 亚洲一区二区三区成人在线视频精品 | 欧美日韩一级黄| 欧美人与性动交cc0o| 国产欧美日韩中文字幕在线| 篠田优中文在线播放第一区| 亚洲字幕在线观看| 国语自产在线不卡| 亚洲女同性videos| 最近看过的日韩成人| 欧美激情精品久久久久| 亚洲高清精品中出| 亚洲手机在线|