??xml version="1.0" encoding="utf-8" standalone="yes"?>国产一区二区不卡视频,欧美一区视久久,四虎精品成人影院观看地址http://www.aygfsteel.com/robbie/category/36431.htmlzh-cnThu, 18 Dec 2008 17:08:53 GMTThu, 18 Dec 2008 17:08:53 GMT60JBossSeam学习pd之四--W二个例?/title><link>http://www.aygfsteel.com/robbie/archive/2008/12/18/247245.html</link><dc:creator>The Matrix</dc:creator><author>The Matrix</author><pubDate>Thu, 18 Dec 2008 15:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/robbie/archive/2008/12/18/247245.html</guid><wfw:comment>http://www.aygfsteel.com/robbie/comments/247245.html</wfw:comment><comments>http://www.aygfsteel.com/robbie/archive/2008/12/18/247245.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/robbie/comments/commentRss/247245.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/robbie/services/trackbacks/247245.html</trackback:ping><description><![CDATA[<p>    上次使用Seam自动生成了一个CRUD的例子,后来惌是自q手v家做一个例子看看,于是开始动手?/p> <p>    首先使用JBossTools工具生成目Q在生成目的向gQ如果项目类型选择earQ则会生成四个项目,分别对应war、ear、ejb、testQ觉得这样太q繁琐,q是选择warcdQ又惌不用tomcat作ؓq行服务器吧Q因为JBoss也不太熟(zhn)。没惛_q一试倒试出问题来了,如果完全使用向导生成目Q选择tomcat作ؓq行服务器,则项目根本无法运行v来,L提示~少q个jarQ那个jar。好Q又换回JBossQ没问题了。仔l看了一下,原来在自动生成项目的WebContent/WEB-INF/lib目录中,只有大概十几个jarQ连Hibernate的jar都没有,而在JBoss的Server/default/lib目录下则什么jar都有Q怪不得不出错?/p> <p><font color="#0080c0"><strong>W一个教训:q是先用JBoss作ؓq行环境Q等整个Seam都搞熟了Q再配一个Tomcat的运行环境?/strong></font></p> <p>    l箋Q将原来目中的一个通用DAO和一个UserService拯q来Q代码如下,启动服务器报错。分别ؓ如下错误信息Q?/p> <p><font color="#0080c0"><strong>W二个错误解冻ICaused by: java.lang.IllegalArgumentException: @PersistenceContext may only be used on session bean or message driven bean components: genericDao</strong></font></p> <p>    既然提示@PersistenceContext只能用在SessionBean中,因ؓ原来的代码是使用的Spring框架Q想了好长时_在WebContent/WEB-INF/component.xml中看到这么一D,那么是不是通过@In来注入entityManager呢,修改<font color="#ff0000"><font color="#000000">@PersistenceContext为@InQ编辑器自动提示没有发现名称为em的ComponentQ这点好像不错)Q于是再修改?/font><font color="#0080c0"><strong>@In("entityManager")</strong></font></font><font color="#000000"> Q重启服务器Q该问题解决?/font></p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;"><</span><span style="color: #000000;">persistence:managed</span><span style="color: #000000;">-</span><span style="color: #000000;">persistence</span><span style="color: #000000;">-</span><span style="color: #000000;">context name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">entityManager</span><span style="color: #000000;">"</span><span style="color: #000000;"> auto</span><span style="color: #000000;">-</span><span style="color: #000000;">create</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;"> entity</span><span style="color: #000000;">-</span><span style="color: #000000;">manager</span><span style="color: #000000;">-</span><span style="color: #000000;">factory</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">#{testEntityManagerFactory}</span><span style="color: #000000;">"</span><span style="color: #000000;">/></span><span style="color: #000000;"> <br /> </span></div> <p><font color="#0080c0"><strong>W三个错误解冻ICaused by org.jboss.seam.RequiredException with message: "@In attribute requires non-null value: userService.genericDao"</strong></font></p> <p>    UserService中的<font color="#ff0000"><strong>@In</strong></font>修改?font color="#0080c0"><strong>@In(create = true, required = true)</strong><font color="#000000">解决此问题?/font></font></p> <p>    解决上述几个问题后,自己的例子终于运行v来了 :-)</p> <p>    下一关于Seam In Action中对JSF的介l及Seam如何增强JSF?/p> <p>-------------------------------------------------------------------------------------------------</p> <p><font color="#0080c0"><font color="#000000">    目生成的代码被分ؓ两个目录Q分别ؓAction和Model目录Q检查JBoss中项目部|的目录Q发觉Action目录下的代码~译生成的class文g被存放至WEB-INF/dev目录下,Model目录下的代码~译生成的class文g被存放至WEB-INF/classes目录下,google了一下,发现在Seam Reference中提到这是Seam的增量式重部|Ԍ支持对JavaBeanlg的增量重部vQ可以加快编?~译/试的速度?/font></font></p> <p>代码如下Q?/p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;"><span style="font-family: courier;"><span style="color: #000000;"><span style="font-family: arial;"><span style="font-family: arial;"><span style="font-family: times new roman;"><span style="color: #000000;"><span style="font-family: courier;"><span style="color: #000000;"><span style="font-family: times new roman;"><span style="font-family: arial;"><span style="color: #000000;"><span style="font-family: times new roman;"><span style="color: #000000;"><span style="font-family: georgia;"><span style="color: #000000;">public interface GenericDao {<br />     public Object get(Class clazz, Serializable id);<br />     public </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> save(Object object);<br />     public </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> update(Object object);<br />     public </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> remove(Class clazz, Serializable id);<br />     public </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> remove(Object obj);<br />     <img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /><br /> }</span></span></span></span></span></span></span></span><span style="color: #000000;"><br /> <br /> <span style="font-family: georgia;"><span style="color: #000000;"><span style="font-family: courier;"><span style="color: #000000;"><span style="font-family: arial;"><span style="font-family: arial;"><span style="font-family: times new roman;"><span style="color: #000000;"><span style="font-family: courier;"><span style="color: #000000;"><span style="font-family: georgia;"><span style="color: #000000;">@Name(</span><span style="color: #000000;">"</span><span style="color: #000000;">genericDao</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br /> public class GenericDaoImpl implements GenericDao {<br />     <strong><span style="color: red;">@PersistenceContext</span></strong>  </span><span style="color: #000000;">----></span><span style="color: #000000;">   @In(</span><span style="color: #000000;">"</span><span style="color: #000000;">entityManager</span><span style="color: #000000;">"</span><span style="color: #000000;">) <br />     private EntityManager em;<br /> <br />     public Object get(Class clazz, Serializable id) {<br />         </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (id </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #0000ff;">null</span><span style="color: #000000;">)  </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />         </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> em.find(clazz, id);<br />     }<br />     <img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /><br /> }</span></span></span><span style="color: #000000;"><br /> <br /> <span style="font-family: georgia;"><span style="color: #000000;">public interface UserService {<br />     public </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> findAllUsers();<br /> }<br /> <br /> @Name(</span><span style="color: #000000;">"</span><span style="color: #000000;">userService</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br /> public class UserServiceImpl implements UserService, SecurityUserService {<br /> <br />     <strong><span style="color: red;">@In</span></strong> </span><span style="color: #000000;">----></span><span style="color: #000000;"> @In(create </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">, required </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">)<br />     protected GenericDao genericDao;<br />     private List</span><span style="color: #000000;"><</span><span style="color: #000000;">User</span><span style="color: #000000;">></span><span style="color: #000000;"> resultList </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br /> <br />     public List</span><span style="color: #000000;"><</span><span style="color: #000000;">User</span><span style="color: #000000;">></span><span style="color: #000000;"> getResultList() {<br />         </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (resultList </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #0000ff;">null</span><span style="color: #000000;">) {<br />             </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.findAllUsers();<br />         }<br />         </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> resultList;<br />     }<br /> <br />     public </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> setResultList(List</span><span style="color: #000000;"><</span><span style="color: #000000;">User</span><span style="color: #000000;">></span><span style="color: #000000;"> resultList) {<br />         </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.resultList </span><span style="color: #000000;">=</span><span style="color: #000000;"> resultList;<br />     }</span></span></span><span style="color: #000000;"><br /> <span style="font-family: georgia;"><span style="color: #000000;"><br />     public </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> findAllUsers() {<br />         String hql </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">from User order by userCode</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />         resultList </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.genericDao.query(hql);<br />     }<br /> }<br /> <br /> // 实体c?br /> @Entity<br /> @Table(name = "USER")<br /> public class User implements IUser, Serializable {<br />     // 用户~码<br />     @Id<br />     private String userCode;<br /> <br />     // 用户姓名<br />     private String userName;<br /> }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="color: #000000;"><br /> <br /> </span></div> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;"><span style="font-family: georgia;"><span style="color: #000000;"><!</span><span style="color: #000000;">DOCTYPE composition PUBLIC </span><span style="color: #000000;">"</span><span style="color: #000000;">-//W3C//DTD XHTML 1.0 Transitional//EN</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />     </span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</span><span style="color: #000000;">"</span><span style="color: #000000;">></span><span style="color: #000000;"><br /> </span><span style="color: #000000;"><</span><span style="color: #000000;">ui:composition xmlns</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.w3.org/1999/xhtml</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />     xmlns:s</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://jboss.com/products/seam/taglib</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />     xmlns:ui</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://java.sun.com/jsf/facelets</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />     xmlns:f</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://java.sun.com/jsf/core</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />     xmlns:h</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://java.sun.com/jsf/html</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />     xmlns:rich</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://richfaces.org/rich</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />     template</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">layout/template.xhtml</span><span style="color: #000000;">"</span><span style="color: #000000;">></span><span style="color: #000000;"><br /> <br /> </span><span style="color: #000000;"><</span><span style="color: #000000;">ui:define name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">body</span><span style="color: #000000;">"</span><span style="color: #000000;">></span><span style="color: #000000;"><br />     </span><span style="color: #000000;"><</span><span style="color: #000000;">rich:panel</span><span style="color: #000000;">></span><span style="color: #000000;"><br />         </span><span style="color: #000000;"><</span><span style="color: #000000;">f:facet name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">header</span><span style="color: #000000;">"</span><span style="color: #000000;">></span><span style="color: #000000;">User Search Results</span><span style="color: #000000;"></</span><span style="color: #000000;">f:facet</span><span style="color: #000000;">></span><span style="color: #000000;"><br />         </span><span style="color: #000000;"><</span><span style="color: #000000;">rich:dataTable id</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">userServiceTable</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />                     </span><span style="color: #0000ff;">var</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">user</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />                   value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">#{userService.resultList}</span><span style="color: #000000;">"</span><span style="color: #000000;">></span><span style="color: #000000;"><br />             </span><span style="color: #000000;"><</span><span style="color: #000000;">h:column</span><span style="color: #000000;">></span><span style="color: #000000;"><br />                 </span><span style="color: #000000;"><</span><span style="color: #000000;">f:facet name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">header</span><span style="color: #000000;">"</span><span style="color: #000000;">></span><span style="color: #000000;"><br />                     </span><span style="color: #000000;"><</span><span style="color: #000000;">h:outputText value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">UserCode</span><span style="color: #000000;">"</span><span style="color: #000000;">/></span><span style="color: #000000;"><br />                 </span><span style="color: #000000;"></</span><span style="color: #000000;">f:facet</span><span style="color: #000000;">></span><span style="color: #000000;"><br />                 </span><span style="color: #000000;"><</span><span style="color: #000000;">h:outputText value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">#{user.userCode}</span><span style="color: #000000;">"</span><span style="color: #000000;">/></span><span style="color: #000000;"><br />             </span><span style="color: #000000;"></</span><span style="color: #000000;">h:column</span><span style="color: #000000;">></span><span style="color: #000000;"><br />             </span><span style="color: #000000;"><</span><span style="color: #000000;">h:column</span><span style="color: #000000;">></span><span style="color: #000000;"><br />                 </span><span style="color: #000000;"><</span><span style="color: #000000;">f:facet name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">header</span><span style="color: #000000;">"</span><span style="color: #000000;">></span><span style="color: #000000;"><br />                     </span><span style="color: #000000;"><</span><span style="color: #000000;">h:outputText value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">UserName</span><span style="color: #000000;">"</span><span style="color: #000000;">/></span><span style="color: #000000;"><br />                 </span><span style="color: #000000;"></</span><span style="color: #000000;">f:facet</span><span style="color: #000000;">></span><span style="color: #000000;"><br />                 </span><span style="color: #000000;"><</span><span style="color: #000000;">h:outputText value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">#{user.userName}</span><span style="color: #000000;">"</span><span style="color: #000000;">/></span><span style="color: #000000;"><br />             </span><span style="color: #000000;"></</span><span style="color: #000000;">h:column</span><span style="color: #000000;">></span><span style="color: #000000;"><br />         </span><span style="color: #000000;"></</span><span style="color: #000000;">rich:dataTable</span><span style="color: #000000;">></span><span style="color: #000000;"><br />        </span><span style="color: #000000;"></</span><span style="color: #000000;">rich:panel</span><span style="color: #000000;">></span><span style="color: #000000;"><br /> </span><span style="color: #000000;"></</span><span style="color: #000000;">ui:define</span><span style="color: #000000;">></span><span style="color: #000000;"><br /> </span><span style="color: #000000;"></</span><span style="color: #000000;">ui:composition</span><span style="color: #000000;">></span></span></span></div> <p>通过q个实践Q小l一下:</p> <p>1、发觉Seam实化了JSF开发,但由于它涉及的新东西相对较多Q与传统的SSH走的路线不太一_q是觉得其学习曲U比较陡峭,需要对Seam熟练掌握后(包括开发环境的搭徏{)才能真正提高开发效率?/p> <p>2、Seam提供了IOC的功能,有时需要蟩出SpringQ从一个新的角度去审视Seam?/p> <img src ="http://www.aygfsteel.com/robbie/aggbug/247245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/robbie/" target="_blank">The Matrix</a> 2008-12-18 23:46 <a href="http://www.aygfsteel.com/robbie/archive/2008/12/18/247245.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBossSeam学习pd之三--W一个例?/title><link>http://www.aygfsteel.com/robbie/archive/2008/12/09/245362.html</link><dc:creator>The Matrix</dc:creator><author>The Matrix</author><pubDate>Tue, 09 Dec 2008 14:40:00 GMT</pubDate><guid>http://www.aygfsteel.com/robbie/archive/2008/12/09/245362.html</guid><wfw:comment>http://www.aygfsteel.com/robbie/comments/245362.html</wfw:comment><comments>http://www.aygfsteel.com/robbie/archive/2008/12/09/245362.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/robbie/comments/commentRss/245362.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/robbie/services/trackbacks/245362.html</trackback:ping><description><![CDATA[<p>        看了Seam的例子,也看了Seam的简介,不住手痒,q是先做一个例子吧Q遵照《seam_reference》第三章中的指导Q用JBossTool生成了自qW一个例子,q程如下Q?/p> <p>1、生成Sem web目</p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step1_2.jpg"><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 50px; border-left: 0px; border-bottom: 0px" height="320" alt="step1" src="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step1_thumb_1.jpg" width="460" border="0"></a> </p> <p>2、输入项目的相关信息Q如下图Q?/p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step2.jpg"><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 50px; border-left: 0px; border-bottom: 0px" height="548" alt="step2" src="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step2_thumb.jpg" width="500" border="0"></a> </p> <p>      注意Q如果是W一ơ用EclipseQ需要配|Target Runtime和Target Server?/p> <p>3、然后一路nextQ到最后一步时Q如果是W一ơ用,也要注意配置Seam Runtime和Connection ProfileQ如下图。最后点击finish按钮Q即可创建Seam目?/p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step3.jpg"><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 50px; border-left: 0px; border-bottom: 0px" height="548" alt="step3" src="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step3_thumb.jpg" width="500" border="0"></a> </p> <p>4、生成项目后Q在Eclipse中共出现了四个项目,如下Q?/p> <ul> <li>seamfirst Qweb目Q?/li> <li>seamfirst-ear Qear目Q集成web和ejbQ?/li> <li>seamfirst-jar Qejb目Q?/li> <li>seamfirst-test Q测试项目,q行单元试Q?/li></ul> <p>      此时q行JBossServer服务器,讉K<a href="http://localhost:8080/seamfirst">http://localhost:8080/seamfirst</a>链接Q出现如下图面Q此时Seam帮我们生成了一个框Ӟ包含了基本的d和退出功能,q有一个首c?/p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step5.jpg"><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 50px; border-left: 0px; border-bottom: 0px" height="375" alt="step5" src="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step5_thumb.jpg" width="500" border="0"></a> </p> <p>5、l!使用Seam生成单表的CRUD操作。本步骤前提Q有一个mysql数据库,数据库中有一个Customer表,该表有IDQintcdQ、customernameQvarchar2cdQ、customerdescQvarchar2cdQ、createdateQdatecdQ、emailQvarchar2cdQ五个字Dc在seamfirst目上点d键,选择Seam Generate Entities菜单Q弹出界面如下图Q?/p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step6.jpg"><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 50px; border-left: 0px; border-bottom: 0px" height="431" alt="step6" src="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step6_thumb.jpg" width="500" border="0"></a> </p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step7.jpg"><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 50px; border-left: 0px; border-bottom: 0px" height="373" alt="step7" src="http://www.aygfsteel.com/images/blogjava_net/robbie/WindowsLiveWriter/JBossSeam_12C10/step7_thumb.jpg" width="500" border="0"></a> </p> <p>      单击finish按钮后,再运行JBoss Server服务器,讉K<a href="http://localhost:8080/seamfirst">http://localhost:8080/seamfirst</a>Q发觉菜单栏上多了一个Customer List菜单Q单L链接Q即可进行Customer的添加、删除、修攏V查询操作,虽然生成的界面不是很好看Q也不是很符合我自己的操作习惯,但是功能倒是完备?/p> <p>      以后若是修改了Seam提供的代码自动生成的模板Q然后再使用该功能,惛_生成的页面就W合自己的项目要求了Q记下一W,先不它?/p> <p> </p> <p>生成的代码分析:</p> <p>生成的代码主要有两部分,一部分为Java代码Q一部分为页面代码?/p> <p><font color="#0080c0">Java代码包括如下三个c:</font></p> <ul> <li>Customer.java ---- 实体c,映射到数据库中的Customer表?/li> <li>CustomerHome.java ---- SessionBeanQ提供了Customercȝ创徏、更新、删除功能。承了org.jboss.seam.framework.EntityHomec,EntityHomecM提供创徏、更新、删除等基本功能?/li> <li>CustomerList.java ---- SessionBeanQ提供了Customercȝ查询功能。承了org.jboss.seam.framework.EntityQueryc,EntityQuerycM提供了查询功能?/li></ul> <p>      CustomerHome和CustomerListcM都用了@Name annotationQ这样在面中就可以直接讉KSession Bean中的Ҏ(gu)了,辑ֈ了Seam表现层和业务层直接融合的目标?/p> <p><font color="#0080c0">面代码包括如下文gQ?/font></p> <ul> <li>Customer.xhtml</li> <li>Customer.page.xml</li> <li>CustomerEdit.xhtml</li> <li>CustomerEdit.page.xml</li> <li>CustomerList.xhtml</li> <li>CustomerList.page.xml</li></ul> <p>      刚开始看q段代码Ӟ困惑我的有两个地?/p> <ul> <li>一个是CustomerList.xhtml中rich:dataTable的value?#{customerList.resultList}"QcustomerList我明白指的是CustomerList SessionBeanQ但是我看遍了其代码Q也没有发现有resultList属性,后来仔细一看,才发觉该属性在其父cEntityQuery中?/li> <li>另一个是每一个xhtml文g都有一个对应的page.xml文gQ想了半天也没整明白q是怎么回事Q后来只好l看Seam in Action的第三章Q看着看着l于明白了,原来q是Seam对JSF的一个扩展,增强了JSF的功能,具体含义后面详细解释?/li></ul> <p>xW一个用JBossTools生成的Seam例子完成了,好像很简?:-)</p><img src ="http://www.aygfsteel.com/robbie/aggbug/245362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/robbie/" target="_blank">The Matrix</a> 2008-12-09 22:40 <a href="http://www.aygfsteel.com/robbie/archive/2008/12/09/245362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBossSeam?amp;quot;No phase id bound to current thread........&quot;异常处理http://www.aygfsteel.com/robbie/archive/2008/12/07/244903.htmlThe MatrixThe MatrixSun, 07 Dec 2008 14:03:00 GMThttp://www.aygfsteel.com/robbie/archive/2008/12/07/244903.htmlhttp://www.aygfsteel.com/robbie/comments/244903.htmlhttp://www.aygfsteel.com/robbie/archive/2008/12/07/244903.html#Feedback0http://www.aygfsteel.com/robbie/comments/commentRss/244903.htmlhttp://www.aygfsteel.com/robbie/services/trackbacks/244903.html用JBossTools生成目Q生成CRUD的代码,然后讉K报了如下异常:

Exception during request processing:

Caused by java.lang.IllegalStateException with message: "No phase id bound to current thread (make sure you do not have two SeamPhaseListener instances installed)"

org.jboss.seam.contexts.PageContext.getPhaseId(PageContext.java:163)
org.jboss.seam.contexts.PageContext.isBeforeInvokeApplicationPhase(PageContext.java:175)
org.jboss.seam.contexts.PageContext.getCurrentWritableMap(PageContext.java:91)
org.jboss.seam.contexts.PageContext.remove(PageContext.java:105)
org.jboss.seam.Component.newInstance(Component.java:2102)
org.jboss.seam.Component.getInstance(Component.java:1987)
org.jboss.seam.Component.getInstance(Component.java:1966)
org.jboss.seam.Component.getInstance(Component.java:1960)
org.jboss.seam.Component.getInstance(Component.java:1933)
org.jboss.seam.Component.getInstance(Component.java:1928)
org.jboss.seam.faces.FacesPage.instance(FacesPage.java:92)
org.jboss.seam.core.ConversationPropagation.restorePageContextConversationId(ConversationPropagation.java:84)
org.jboss.seam.core.ConversationPropagation.restoreConversationId(ConversationPropagation.java:57)
org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:389)
org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:228)
org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:194)
com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:114)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:54)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
java.lang.Thread.run(Thread.java:619)
Google了一下,有h讲是JBoss4.2.3GA版本的BUGQ赶紧下载了JBoss4.2.2GAQ再试一切正常!
不知q会不会有其它莫名的BUG?.....


The Matrix 2008-12-07 22:03 发表评论
]]>
JBossSeam学习pd之二--什么是JBossSeamhttp://www.aygfsteel.com/robbie/archive/2008/12/06/244822.htmlThe MatrixThe MatrixSat, 06 Dec 2008 15:51:00 GMThttp://www.aygfsteel.com/robbie/archive/2008/12/06/244822.htmlhttp://www.aygfsteel.com/robbie/comments/244822.htmlhttp://www.aygfsteel.com/robbie/archive/2008/12/06/244822.html#Feedback0http://www.aygfsteel.com/robbie/comments/commentRss/244822.htmlhttp://www.aygfsteel.com/robbie/services/trackbacks/244822.html        把环境配好之后,Seam的例子也q行h了,看了seam_referenceW一章中如下几个例子讲解Q?/p>
  • the registration example
  • the messages example
  • the todo list example
  • the numberguess example

        又在满江U的|站上找了seam_reference2.0的中文文档,主要看了《the contextual component model》一章,看完以后感觉Seam最核心的地方就是其contextual component model了,不过看完q一章以后只是对Seam有个大概的了解,对其具体的内容,l节q缺乏进一步的了解Q对其优炏V缺点也~Zq一步的认识?/p>

        然后又找C《Seam in Action》的?sh)子书,看了一点之后还是觉得这本电(sh)子书写得好,内容l织的很好,不象seam_reference后面的章节仅仅是|列seam的各功能?/p>

        今天把Seam in Action的第一章草草看了一遍,第一章讲q的内容ȝ如下Q?/p>

1、什么是Seam

        在Seam in Action中,没有SeamUC为web frameworkQ而是其UCؓapplication stack。SeamJava EE中的EJB3、JSF、JPA/Hibernate、JAAS{技术融合在一P提供了更Ҏ(gu)使用的方式,比如conversation、page flows、buisness precesses、rule-based security、JavaScript(Ajax) remoting、PDF rendering、emaill合、charting、file uploads、Groovy integration{,用以化web开发?/p>

2、Seam的目?

        化web开?

3、Seam如何集成各类技?/p>

    selected Seam集成了JSF、JPA和POJO Component

selected1 在Seam中将EJB3.0中的Session Bean作ؓJSF的managed beanQ直接将表现层和业务层衔接在一P使得Session Bean可以直接讉Kweb相关数据Q比如request、session、application、JSF的FacesMessage、Component Tree{。而在不用SeamӞ一般都是用JSF back bean来作现层和业务层之间的中介?

selected1 使用annotation中的@Name标注替代了JSF的faces-config.xml中关于managed bean的配|?

selected1 Seam不一定必M用EJB和JPAQ也可以使用POJO、Hibernate作ؓ替代。如下图Q?/p>

seam 

    selected 上下文相关的lg模型QSeam中的核心概念Q?/font>

selected1 Seam提供?U类型的上下文,其中属于SeamҎ(gu)的两U上下文cd分别为:Conversation Context、Business process Context?

selected1 Seam提供了统一的组件注册、annotation、异帔R|、方法拦截、统一的EL表达式等功能。其中Seam对其理的组件拦截过E如下图Q?/p>

seam1

4、Seam的核心竞争力

    selected 更好的JSF

selected1 增强的JSF

  • Seam对JSF最被认可的改进是消除了在配置文g中声明managed bean?
  • Prerender page actions
  • Managed request parameters (for a given page)
  • Intelligent stateless and stateful navigation
  • Transparent JSF data model and data model selection handling
  • Fine-grained exception handling
  • Page-level security (per view ID)
  • ZAnnotation的表单验?
  • Bookmarkable command links (solving the “everything is a POST” problem)
  • Entity converter for pick lists
  • Conversation controls
  • Support for preventing lazy initialization exceptions and nontransactional data access in the view

selected1 消除了连接BeanQELIMINATING CONNECTOR BEANSQ?/p>

      用一q图可以很好的说明这句话的含?/p>

seam2

selected1 引入了有状态的变量范围QINTRODUCING STATEFUL VARIABLE SCOPESQ?/p>

seam3

selected1 扩展的Persistence Context

      Spring中提供了The Session In View FilterQ得persistence manage可以在一个请求中存在Q避免了常见的LazyInitializationException。在Seam中,扩展的Persistence Context可以跨越多个h。其实扩展的Persistence Context是Conversation Context、Business Process Context的基?/p>

    selected get rich quick

        Seam提供了两U方式将Ajax集成到Seam应用中,一U是使用hAjaxҎ(gu)的JSFlgQ如RichFaces和ICEFacesQ另一U是可以在浏览器中用JavaScript直接调用服务端的lg?/p>

        Seamq提供了另外一U意义上的RichQ即PDF、mail{功能集成到Seam应用中?/p>

    selected 提供了一个快速开发环?/p>

selected1 代码自动生成

selected1 热部|?/p>

selected1 Seam调试面

selected1 不部|即可以q行单元试

        

从目前我个h的理解来看,Seam的作用与能力如下Q?/p>

  • SeamEJB3与JSF整合在一P消除了JSF与业务代码之间的间隙Q直接将表现层与业务层衔接在一?
  • Seam提出了Conversation Context的概念,Stateful EJB引入到web开发中Q直接与Conversation Context对应
  • Seam提供了与Jbpm、itext、mail{一pd开源框架的整合Q对于需要用的相关功能的用h_提供了便利?
  • 提供了开发工L整合QSeam Gen与IDEQ,q可以自动生成部分代?

        但由于Seam整合了如此多的框Ӟ带来的一个最大的~点Q?font color="#ff0000">学习曲线陡峭Q在SSH非常行的今天,需要面对很多新技术(JSF、EJB3、JPA{)Q对于一个新手来说难度比较大Q如果想使Seam被更多的开发h员用,必须加强它的文档Q目前的文档q是太少了?/p>

The Matrix 2008-12-06 23:51 发表评论
]]>
JBossSeam学习pd之一--准备学习环境http://www.aygfsteel.com/robbie/archive/2008/12/03/244224.htmlThe MatrixThe MatrixWed, 03 Dec 2008 15:03:00 GMThttp://www.aygfsteel.com/robbie/archive/2008/12/03/244224.htmlhttp://www.aygfsteel.com/robbie/comments/244224.htmlhttp://www.aygfsteel.com/robbie/archive/2008/12/03/244224.html#Feedback0http://www.aygfsteel.com/robbie/comments/commentRss/244224.htmlhttp://www.aygfsteel.com/robbie/services/trackbacks/244224.html准备深入学习JBossSeamQ好好研I研IӞ具体学习路线基本遵@jboss-seam-2.1.1.CR1中的<<seam_reference.pdf>>?/p>

学习JBossSeam之前最好对相关技术有一定的了解Q比如:

  • JSF
  • EJB3.0
  • JPA

然后下蝲相关的YӞ如下Q?/p>

  • jboss-seam-2.1.1.CR1
  • jboss-4.2.3.GA
  • JBossTools-3.0.0.Beta1-R200810311334-ALL-win32Q开发环境)
  • eclipse-jee-ganymede-SR1-win32Q开发环境)
  • apache-ant-1.7.0
  • jdk1.6.0_06

环境的配|都比较单,基本都是解压卛_Q有如下注意事项Q?/p>

  • 在系l的环境变量中设|JAVA_HOME、ANT_HOME
  • JBossTools解压后需拯至eclipse解压后的目录中?/li>
  • jboss-seam-2.1.1.CR1解压后,需讄其bulid目录下的default.build.properties文g中的jboss.home为JBOSS_HOMEQ假定ؓjboss-4.2.3GA的安装目录)?/li>

上述配置好后Q启动JBoss ServerQ然后至SEAM_HOMEQ假定ؓSeam的安装目录)/examples/registration目录下,q行ant explode命oQ即可编译部|registration应用至JBoss Server中,最后访问:http://localhost:8080/seam-registration 卛_体验Seam提供的第一个exampleE序 :-)



The Matrix 2008-12-03 23:03 发表评论
]]>
关于Seam的一有的评论http://www.aygfsteel.com/robbie/archive/2008/12/03/244109.htmlThe MatrixThe MatrixWed, 03 Dec 2008 05:11:00 GMThttp://www.aygfsteel.com/robbie/archive/2008/12/03/244109.htmlhttp://www.aygfsteel.com/robbie/comments/244109.htmlhttp://www.aygfsteel.com/robbie/archive/2008/12/03/244109.html#Feedback0http://www.aygfsteel.com/robbie/comments/commentRss/244109.htmlhttp://www.aygfsteel.com/robbie/services/trackbacks/244109.html具体内容参见如下链接Q?/p>

http://www.javaworld.com.tw/roller/ingramchen/entry/2005_9_20_JBossSeamKingofStateful_



The Matrix 2008-12-03 13:11 发表评论
]]>
վ֩ģ壺 | ͼʲ| ɽ| | | ̽| | ͩ®| | | ĵ| ϴ| | | | | | ˺| ˾| | ī| ֬| | | | Ĭ| | ʡ| ɰ| ˼| | | | ͼľ| | ӱ| | | | | |