<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Let's go inside

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

    傷心

    Posted on 2006-07-19 18:39 Earth 閱讀(352) 評論(0)  編輯  收藏 所屬分類: Life

    去掉與Hibernate有關的HibernateUtil,HibernateFilter, 以及所有的Hibernate配置和映射文件~_~

    IUserDAO, IMessageDAO等DAO接口基本不變,只需要在類前面加上@Remote~_~

    DAO接口的實現基本不變,只需要在類前面加上@Stateless,并定義一個叫javax.persistence.EntityManager的萬能類(和Spring中的 getHibernateTemplate()差不多但是比它還要簡單~_~)

    DAO接口的EJB3實現像下面這樣

    @Stateless
    public ? class ?MessageDAO? implements ?IMessageDAO?{

    ????@PersistenceContext(type
    = PersistenceContextType.TRANSACTION,?unitName? = ? " message " )
    ????
    private ?EntityManager?manager;

    ????
    public ? void ?saveMessage(Message?m)?{
    ????????manager.persist(m);
    ????}

    ????
    public ? void ?updateMessage(Message?m)?{
    ????????
    if ?(manager.find(Message. class ,?m.getId())? == ? null )?{
    ????????????
    throw ? new ?RuntimeException( " Unable?to?update? " ? + ?m
    ????????????????????
    + ? " ?because?there?is?no?prior?version " );
    ????????}
    ????????manager.merge(m);
    ????}

    ????
    public ?List?getMessages()?{
    ????????String?sql?
    = ? " select?m?from?Message?m " ;
    ????????
    return ?manager.createQuery(sql).getResultList();
    ????}

    ????
    public ? void ?deleteMessage(String?id,?String?userId)?{
    ????????Message?msg?
    = ?getMessage(id);
    ????????
    if ?(msg? == ? null )?{
    ????????????
    throw ? new ?MessageDAOException( " Can't?find?the?message?u?wanna?del! " );
    ????????}
    ????????
    if ?( ! msg.getUser().getId().equals(userId))?{
    ????????????
    throw ? new ?MessageDAOException( " U?cannot?del?others'?message! " );
    ????????}
    ????????
    if ?(manager.contains(msg))?{
    ????????????manager.remove(msg);
    ????????}?
    else ?{
    ????????????removeMessage(msg.getId());
    ????????}
    ????}

    ????
    public ? void ?removeMessage(String?id)?{
    ????????manager.createQuery(
    " DELETE?FROM?Message?m?WHERE?m.id?=?:mid " )
    ????????????????.setParameter(
    " mid " ,?id).executeUpdate();
    ????}

    ????
    public ?Message?getMessage(String?id)?{
    ????????
    return ?(Message)?manager.find(Message. class ,?id);
    ????}

    }

    (看看是不是比Hibernate3.0簡單,好像Hibernate3.2和這個一樣,偶還沒試過3.2)

    最后最關鍵的是實體定義和映射,到regsaga上面看了篇講解Annotation的文章 http://wiki.redsaga.com/confluence/display/HART/Mapping+entity+bean+associations+relationships
    原來Hibernate和EJB3的注解出自同門,我好像又明白了一點什么~_~

    改完了,要開始測試了,真是激動人心。

    確保D:\jboss-4.0.4.GA\server\default\lib\mysql-connector-java-3.1.12-bin.jar

    然后拷貝D:\jboss-4.0.4.GA\docs\examples\jca\mysql-ds.xml
    到D:\jboss-4.0.4.GA\server\default\deploy并做小部分修改
    ~_~。
    好像還要加一個persistence.xml一起打在jar包里邊。寫一個Ant任務吧,大家都這么做(還沒有在Eclipse下打包并發布的經驗,只會
    JBuilder~_~)

    幾番周折,給Ant加了打jar包打war包以及deploy的任務。
    啟動JBoss-4.0.4-GA,出了些錯誤,一一改正。。

    JUnit測試通過了,但打開JSP頁面注冊時報錯

    18:31:28,859 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
    java.lang.reflect.UndeclaredThrowableException
    ?at $Proxy177.saveUser(Unknown Source)
    ?at org.apache.jsp.regist_jsp._jspService(regist_jsp.java:64)
    ?at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    ?at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    ?at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    ?at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    ?at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    ?at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    ?at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    ?at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    ?at cn.hxex.message.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:127)
    ?at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    ?at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    ?at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    ?at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    ?at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    ?at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    ?at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    ?at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
    ?at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
    ?at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    ?at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    ?at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    ?at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    ?at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    ?at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    ?at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    ?at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
    ?at java.lang.Thread.run(Thread.java:595)
    Caused by: java.io.NotSerializableException: cn.hxex.message.model.User
    ?at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
    ?at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1245)
    ?at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1069)
    ?at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
    ?at java.rmi.MarshalledObject.<init>(MarshalledObject.java:92)
    ?at org.jboss.aop.joinpoint.MethodInvocation.writeExternal(MethodInvocation.java:318)
    ?at org.jboss.serial.persister.ExternalizePersister.writeData(ExternalizePersister.java:58)
    ?at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java:275)
    ?at org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:386)
    ?at org.jboss.serial.io.MarshalledObjectForLocalCalls.<init>(MarshalledObjectForLocalCalls.java:38)
    ?at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:57)
    ?at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
    ?at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)
    ?... 29 more
    始終沒法解決,非常傷心,也很郁悶。決定先放棄一段時間。。。。。。。。

    主站蜘蛛池模板: 免费精品一区二区三区第35| 一级做a免费视频观看网站| 5555在线播放免费播放| 亚洲AV永久无码精品水牛影视 | 亚洲va在线va天堂成人| 亚洲黄色免费电影| 亚洲人成日本在线观看| 无码日韩精品一区二区免费| 在线观看亚洲AV每日更新无码 | 日韩在线免费看网站| 亚洲国产成人无码AV在线影院| 女人18毛片免费观看| 亚洲国产欧美日韩精品一区二区三区 | 精品国产亚洲一区二区在线观看 | 五月天网站亚洲小说| 在线人成精品免费视频| 亚洲mv国产精品mv日本mv| 成人免费午夜视频| 日韩在线观看免费| 亚洲gv白嫩小受在线观看| 五月亭亭免费高清在线| 亚洲第一街区偷拍街拍| 国产亚洲AV夜间福利香蕉149| 成在人线av无码免费高潮喷水| 亚洲国产精品成人精品软件| 日韩免费福利视频| 中文字幕无码免费久久9一区9| 精品无码一区二区三区亚洲桃色| 91在线视频免费91| 国产日韩精品无码区免费专区国产| 亚洲∧v久久久无码精品| 成人性生免费视频| a级精品九九九大片免费看| 亚洲永久中文字幕在线| 一本久久综合亚洲鲁鲁五月天| 男人进去女人爽免费视频国产| 亚洲国产成人AV在线播放| 亚洲日韩中文无码久久| 成人超污免费网站在线看| 中国国语毛片免费观看视频| 国产精品亚洲片在线va|