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 阅读(515) 评论(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出来玩玩。。

 

 


只有注册用户登录后才能发表评论。


网站导航: