Let's go inside

          this blog is deprecated as a result of laziness.
          posts - 59, comments - 2, trackbacks - 0, articles - 0

          老外的HelloEJB 3 Web Project

          Posted on 2006-07-20 07:06 Earth 閱讀(520) 評論(0)  編輯  收藏 所屬分類: JavaEE5/EJB3

          snap007.jpg
          環境:Eclipse3.1.2 + WTP1.0.2, JBoss-4.0.4-GA, MySQL5.0.22
          下WTP花了我不少功夫(WTP依賴于emf-sdo-xsd, GEF以及JEM,偶逐個下了下來)
          Download源代碼
          如果項目是英文的還好,可是我找的這個例子全是德文(好像是。。),不過有圖有代碼基本上還是能看得懂。

          這個項目沒有用ant, 終于有機會見到一個不用ant直接用Eclipse打包和發布ear的項目了。
          第一步創建一個Dynamic Web Project, 名字為HelloWEB,并選擇將其放到HelloEAR中。接下來創建一個EJB Project,名為HelloEJB同樣加入到
          HelloEAR中。
          然后在HelloEJB中寫ejb的代碼以及persistence.xml, 在HelloWEB中寫jsp頁面以及web.xml, 這樣分工很明確,打起jar,war,ear包來也不
          用自己操心。選擇好<SERVER_HOME>以后這些工作會自動進行。

          < persistence >
          ????
          < persistence-unit? name ="contactUnit" >
          ????
          < jta-data-source > java:ContactDS </ jta-data-source >
          ????
          < provider > org.hibernate.ejb.HibernatePersistence </ provider >
          ????
          < properties >
          ????????
          < property? name ="hibernate.hbm2ddl.auto" ?value ="update" ? />
          ????????
          < property? name ="hibernate.dialect"
          ????????????value
          ="org.hibernate.dialect.MySQLInnoDBDialect" ? />
          ????
          </ properties >
          ????
          </ persistence-unit >
          </ persistence >

          這次用的是update,在我的MySQL中自動生成了數據庫,不錯~

          命名及包結構有待參考
          pj.ebj3.entity.Contact
          pj.ejb3.session.ContactManager
          pj.ejb3.session.bean.ContactManagerBean
          pj.web.locator.EjbLocator
          pj.web.servlet.XxxServlet

          public ? class ?EjbLocator?{
          ?
          private ? static ?Context?ctx;
          ?
          private ? static ?EjbLocator?instance? = ? new ?EjbLocator();
          ?
          private ?EjbLocator()?{
          ??
          try ?{
          ???ctx?
          = ? new ?InitialContext();
          ??}?
          catch ?(NamingException?e)?{
          ??}
          ?}
          ?
          public ? static ?EjbLocator?getLocator()?{
          ??
          return ?instance;
          ?}
          ?
          private ? < T > ?T?getEjb(Class < T > ?ejbClass,?String?name)?{
          ??
          try ?{
          ???T?service?
          = ?(T)? new ?InitialContext().lookup( " HelloEAR/ " ? + ?name + ? " /local " );
          ???
          return ?service;
          ??}?
          catch ?(NamingException?e)?{
          ???
          return ? null ;
          ??}
          ?}
          ?
          public ?ContactManager?getContactManager()?{
          ??
          return ?getEjb(ContactManager. class ,? " ContactManagerBean " );
          ?}
          }

          在Servlet中的調用如下:

          protected ? void ?doPost(HttpServletRequest?request,
          ???HttpServletResponse?response)?
          throws ?ServletException,?IOException?{
          ??
          // ?get?parameters
          ??Contact?contact? = ? new ?Contact();
          ??contact.setAddress(request.getParameter(
          " contact.address " ));
                  
          // ?

          ??ContactManager?contactManager?
          = ?EjbLocator.getLocator()
          ????.getContactManager();
          ??Contact?newContact?
          = ?contactManager.addContact(contact);

          ??RequestDispatcher?rd?
          = ? null ;
          ??
          if ?(newContact.getId()? > ? 0 )?{
          ???rd?
          = ?request.getRequestDispatcher( " /WEB-INF/jsps/contactAdded.jsp " );
          ??}?
          else ?{
          ???rd?
          = ?request.getRequestDispatcher( " /WEB-INF/jsps/contactNotAdded.jsp " );
          ??}
          ??rd.forward(request,?response);
          ?}

          另外他把jsp都放在了/WEB-INF/jsps/下面,這個主意不錯,雖然以前也見過,不過還沒有用過。
          最后的結論是還是Eclipse + JBoss IDE的組合好用,然后自己是不是要寫一個Struts + EJB3.0的 Demo出來玩玩。。

          ?

          ?

          主站蜘蛛池模板: 廊坊市| 久治县| 元阳县| 清新县| 灵寿县| 砀山县| 乌拉特中旗| 望奎县| 阜新市| 营口市| 伊金霍洛旗| 博乐市| 喜德县| 颍上县| 尼勒克县| 林州市| 屯留县| 合川市| 磴口县| 临桂县| 青冈县| 分宜县| 盐源县| 星座| 永吉县| 沂南县| 临武县| 昌宁县| 和硕县| 台东县| 米泉市| 丰宁| 墨脱县| 白水县| 广元市| 濮阳市| 托克托县| 邯郸市| 璧山县| 云浮市| 阿拉善左旗|