<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

    My First EJB3 Demo Blood&Tears

    Posted on 2006-08-03 05:34 Earth 閱讀(899) 評(píng)論(0)  編輯  收藏 所屬分類: JavaEE5/EJB3

    寫在前面,一個(gè)EAR包中可以包含若干個(gè)JAR包和WAR包。本demo的目錄結(jié)構(gòu)如下 :
    snap036.jpg
    看了一段時(shí)間的書,手開始癢癢,不料盡碰到一些古怪的問題,郁悶。
    最近的一個(gè)是Eclipse不能自動(dòng)編譯甚至不能編譯java文件的問題。查了半天資料也無(wú)法解決。非常之郁悶。

    只好重新開始新建工程,為了不出錯(cuò),對(duì)照一個(gè)demo開始了。
    工程名就叫做ym(郁悶),選用最為流行的MyEclipse做為插件了。。。
    以后還會(huì)發(fā)生什么問題,不得而知,從現(xiàn)在開始,無(wú)論成功失敗,記錄一下期間碰到的問題,以備后用(純屬個(gè)人經(jīng)驗(yàn),不對(duì)的地方請(qǐng)多指教)。

    1.解決Eclipse自動(dòng)編譯失效問題
    起因:
    我想在EJB工程中使用WEB工程中定義的類,
    比如在EJB工程中的UserManager中需要使用WEB工程中定義的com.earth.ejb3.ServiceLocator;直接import會(huì)出錯(cuò),
    使用Ctrl+1提示Add project 'ymWeb' to build path of 'ymEJB',這樣代碼沒有問題了。

    分析:
    Eclipse自動(dòng)在EJB下的.classpath文件中加入了這樣一句:<classpathentry kind="src" path="/ymWeb"/>
    這樣,在.classpath文件中同時(shí)有兩個(gè)src,另一個(gè)是<classpathentry kind="src" path="src"/>

    我想這大概就是使Eclipse自動(dòng)編譯失效的原因。因?yàn)樽詮氖褂昧吮敬蜟trl+1功能后,java文件就不能自動(dòng)編譯了!

    解決方法:
    OK,經(jīng)過多次嘗試,最后找到了解決辦法:
    如果在WEB工程中要使用EJB工程中定義的類,必須把EJB工程的output目錄加入到WEB工程的build path,
    所以在WEB工程的.classpath中加入這樣一句
    <classpathentry kind="lib" path="/ymEJB/classes"/>

    反過來(lái)也一樣,在EJB工程的.classpath中加入這樣一句
    <classpathentry kind="lib" path="/ymWeb/web/WEB-INF/classes"/>

    即互相把對(duì)方的output做為自己的lib

    這是修改之后ymWeb的.classpath文件
    <classpath>
    ?<classpathentry kind="src" path="src"/>
    ??????? ...
    ?<classpathentry kind="lib" path="/ymEJB/classes"/>
    ?<classpathentry kind="output" path="web/WEB-INF/classes"/>
    </classpath>
    這是修改之后ymEJB的.classpath文件
    <classpath>
    ?<classpathentry kind="src" path="src"/>
    ?<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    ?<classpathentry kind="con" path="com.genuitec.eclipse.j2eedt.core.J2EE14_CONTAINER"/>
    ?<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/jboss-ejb3"/>
    ?<classpathentry kind="lib" path="D:/SmartLibrary/commons/commons-lang.jar"/>
    ?<classpathentry kind="lib" path="/ymWeb/web/WEB-INF/classes"/>
    ?<classpathentry kind="output" path="classes"/>
    </classpath>

    可以通過project->properties->Java Build Path->Libraries選項(xiàng)卡->Add Class Folder來(lái)完成上面的操作

    2.
    加入jar到lib目錄(隨同應(yīng)用一起發(fā)布)
    lib右鍵->import->File system->選擇要導(dǎo)入的jar
    加入jar到build path(不會(huì)發(fā)布)
    project->properties->Java Build Path->Libraries選項(xiàng)卡->Add External JARs

    3.避免頻繁啟動(dòng)jboss技巧。。。

    4.在JAR包中無(wú)法調(diào)用WAR包中的class文件。所以要把WAR中公共的class文件打成一個(gè)JAR包

    5.如何將新建的一個(gè)EJB Project commons-earth.jar包加入到ear中?
    將commons-earth .mymetadata中的<project-module>拷貝到EAR .mymetadata <project-modules>中,
    然后在EAR中的application.xml中加入如下代碼
    ?<module id="myeclipse.1154552687109">
    ??<ejb>commons-earth.jar</ejb>
    ?</module>

    OK,太興奮了,加入user成功了。

    睡覺去了,明天加入extremeTable。

    6.見2:加入eXtremeComponents.jar到lib目錄,此時(shí)在war中可以調(diào)用,但在其它的jar包中無(wú)法調(diào)用,howto?
    project->properties->Java Build Path->Libraries選項(xiàng)卡->Add JARs,選擇ymWeb/web/WEB-INF/eXtremeComponents.jar
    還是不可行,jboss還是找不到它,郁悶,只好將這個(gè)jar包放到default/lib目錄下。reboot jboss
    又提示找不到commons-StringUtils,,,,這些包全部都存在于ymWeb/web/WEB-INF/lib下,為什么會(huì)找不到?


    7.<html:form>和<form>的一個(gè)小區(qū)別前者action="/userAction.do就可以了"后者要寫成action="/ym/userAction.do"

    8.以前碰到過的問題,不要在form中用disabled="disabled"應(yīng)該使用readonly="readonly",只有后者的數(shù)據(jù)才會(huì)自動(dòng)組裝到ActionForm

    9.解決亂碼問題,對(duì)于亂碼,一向是加過濾器,這次卻不行了。郁悶,最后查明原因。EJB3自動(dòng)建表使用了latin1 編碼。將表的默認(rèn)編碼改為utf-8,并且去掉表中每一字段的編碼。
    最后還需要在mysql-ds.xml中設(shè)置jdbc:mysql://localhost:3306/message?useUnicode=true&amp;characterEncoding=UTF-8,修改mysql-ds.xml后需要重新發(fā)布工程。

    10以Packaged Archive的方式發(fā)布EAR包,修改文件后不用重啟jboss可進(jìn)行熱布署

    11.ec自帶分頁(yè),能幫你計(jì)算出rowStart和rowEnd。
    在本示例中,我用的是EJB3中的
    Query.setFirstResult(limit.getRowStart()).setMaxResults(limit.getCurrentRowsDisplayed())
    這樣ec中的分頁(yè)就與具體數(shù)據(jù)庫(kù)無(wú)關(guān)了。。。。。

    主站蜘蛛池模板: 7m凹凸精品分类大全免费| 亚洲色图综合在线| 国产美女被遭强高潮免费网站| 亚洲人成网站观看在线播放| 亚洲精品色播一区二区| 免费黄色毛片视频| 日本亚洲高清乱码中文在线观看| 日本视频免费高清一本18| 毛片免费在线观看网址| 成人亚洲国产va天堂| 最新69国产成人精品免费视频动漫 | 免费av欧美国产在钱| 亚洲无mate20pro麻豆| 青青草国产免费久久久下载| 国产精品亚洲精品久久精品| 亚洲一区二区三区国产精品| 国产一级a毛一级a看免费人娇| 免费永久看黄在线观看app| 特黄特色大片免费| 好男人看视频免费2019中文| 亚洲午夜久久影院| 国内精品乱码卡1卡2卡3免费| 亚洲电影国产一区| 成年性午夜免费视频网站不卡| 亚洲国产精品久久久久网站 | 国产亚洲精品自在线观看| 免费无码黄网站在线看| 亚洲国产日产无码精品| 国产午夜无码精品免费看| 亚洲精品国产啊女成拍色拍| 午夜毛片不卡高清免费| 亚洲国产福利精品一区二区| 国产福利免费在线观看| 青青操免费在线观看| 亚洲国产精品日韩在线| 亚洲AⅤ视频一区二区三区| 精品亚洲视频在线| 精品免费国产一区二区三区| 99免费在线视频| 亚洲综合色婷婷在线观看| 大地资源免费更新在线播放|