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

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

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


    posts - 15,  comments - 34,  trackbacks - 27

    Eclipse快速上手EJB -- 1. Lomboz + JBoss-IDE 配置1

     關于Eclipse、Lomboz、JBoss的客套話免了,直接進入正題。
     
     
    1. 所需軟件
     
       WindowsXP SP1
       JDK 1.4.2-04  可以從SUN官方網站下載
       MySQL 4.1.8 
       Eclipse 3.0.1 及 語言包   
       Lomboz 3.0.1
       JBoss 4.0.0
       JBoss-IDE 1.4.0
       XDoclet  1.2.2
     
    2. 下載
     
    ● Eclipse 3.0.1 及 語言包
     
     
    Lomboz 3.0.1
    lomboz.301.zip (這是7月22日發布的版本)
     
     
      現在主頁上有1月6日的新版本,包括3.1和3.0.1的版本,使用后發現有一些小bug,所以還是推薦使用7月22日發布的版本。 
     
    JBoss 4.0.0
      這是一個zip版本,從上面的站點選擇一個鏡像下載。
     
    JBoss-IDE 1.4.0     http://www.jboss.org/products/jbosside
      現在改名了 JBoss Eclipse IDE,幾天不見就換馬甲了。
      開發JBoss時使用的Eclipse插件,這里我主要使用它的Xdoclet的提示功能,另外它整合了SolarEclipse。
     
     
    ● MySQL 4.1.8
     
    XDoclet  1.2.2
       這里主要是為了替換Lomboz中的XDoclet 1.2.1版本。
     
     
    3. 安裝
     
       F:\j2sdk                              JDK目錄 
       F:\java\xdoclet                       XDoclet 目錄
       F:\java\jboss                         JBoss  目錄 
       D:\eclipse                            Eclipse 3.0.1 目錄
       D:\eclipse\myplugins\lomboz.301       Lomboz 目錄
       D:\eclipse\myplugins\jboss-ide-1.40   JBoss-IDE 目錄
       D:\mysql                              MySQL 4.1.8 目錄 
      
    · lomboz和jboss-ide 我都是采用links方式安裝的,
     
     
    二. 配置開發環境
     
       打開Eclipse,如果界面是“資源透視圖”,那么切換到“Java透視圖”。點擊菜單“窗口”->首選項,以下都在“首選項”中配置:
      1. Java->構建路徑
         
     
     2. Lomboz
     
     
    3. Lomboz ->Server Definitions ->Properties  
      
       因為使用的JBoss 4.0.0 服務器不在 Lomboz 默認服務器之列,所以需要自己建立一個jboss400.server 文件。
       先把下面的jboss400.server 文件復制到Lomboz目錄下的 com.objectlearn.jdt.j2ee_3.0.1\servers 目錄(如果你是把Lomboz直接安裝在Eclipse的Plugins目錄中,這個子目錄就是“Eclipse安裝目錄\plugins\com.objectlearn.jdt.j2ee_3.0.1\servers”;如果你是采用links方式安裝lomboz的,那么這個子目錄就是“Lomboz安裝目錄\eclipse\plugins\com.objectlearn.jdt.j2ee_3.0.1\servers”)。這個目錄下有許多server類型文件,可以把其中認為不需要的文件刪除。

    jboss400.server

    <serverDefinition 
         name="JBOSS 4.0.0"
         ejbModules="true"
         webModules="true"
         earModules="true">
    <property id="serverRootDirectory"
        label="Application Server Directory:"
        type="directory"
        default="F:/java/jboss" />
    <property id="serverAddress"
        label="Address:"
        type="string"
        default="127.0.0.1" />
    <property id="serverPort"
        label="Port:"
        type="string"
        default="8080" />
    <property id="serverConfig"
        label="Server Configuration (minimal/default/all):"
        type="string"
        default="default" />
    <property id="classPathVariableName"
        label="Classpath Variable Name:"
        type="string"
        default="JBOSS400" />
    <property id="classPath"
        label="Classpath Variable:"
        type="directory"
        default="F:/java/jboss" />
    <serverHome>${serverRootDirectory}</serverHome>
    <webModulesDeployDirectory>${serverRootDirectory}/server/${serverConfig}/deploy</webModulesDeployDirectory>
    <ejbModulesDeployDirectory>${serverRootDirectory}/server/${serverConfig}/deploy</ejbModulesDeployDirectory>
    <earModulesDeployDirectory>${serverRootDirectory}/server/${serverConfig}/deploy</earModulesDeployDirectory>
    <jndiInitialContextFactory>org.jnp.interfaces.NamingContextFactory</jndiInitialContextFactory>
    <jndiProviderUrl>jnp://${serverAddress}:1099</jndiProviderUrl>
    <startClass>org.jboss.Main</startClass>
    <startWorkingDirectory>${serverRootDirectory}/bin</startWorkingDirectory>
    <startVmParameters>-Djava.endorsed.dirs=${serverRootDirectory}/lib/endorsed</startVmParameters>
    <startProgramArguments>-c ${serverConfig}</startProgramArguments>
    <stopClass>org.jboss.Shutdown</stopClass>
    <stopWorkingDirectory>${serverRootDirectory}/bin</stopWorkingDirectory>
    <stopVmParameters>-cp {classPathVariableName}/bin/shutdown.jar -Djboss.boot.loader.name=shutdown.bat</stopVmParameters>
    <stopProgramArguments>-S</stopProgramArguments>
    <serverClassPath>
        <jar type="variable">JDK_TOOLS</jar>
        <jar type="variable">${classPathVariableName}/bin/run.jar</jar>
        <jar type="variable">${classPathVariableName}/bin/shutdown.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/concurrent.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/dom4j.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/gnu-regexp.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/jboss-jmx.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/jboss-common.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/jboss-system.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/endorsed/xercesImpl.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/endorsed/xml-apis.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/activation.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/avalon-framework.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/bcel.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/bsh-commands-1.3.0.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/bsh-core-1.3.0.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/bsh-deployer.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/castor-0.9.3.9-xml.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/cglib-full-2.0.1.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/hibernate2.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/hsqldb.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/hsqldb-plugin.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jacorb.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/javax.servlet.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/javax.servlet.jsp.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jaxr-client.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-common-jdbc-wrapper.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-hibernate.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-iiop.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-j2ee.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-jaxrpc.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-jca.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-jsr77.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-management.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-monitoring.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-saaj.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jbossmq.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jbosssx.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jnpserver.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jpl-pattern.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jpl-util.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-transaction.jar</jar>
    </serverClassPath>
    <clientClassPath>
        <jar type="variable">${classPathVariableName}/client/jboss-j2ee.jar</jar>
        <jar type="variable">${classPathVariableName}/client/jnp-client.jar</jar>
        <jar type="variable">${classPathVariableName}/client/jboss-client.jar</jar>
        <jar type="variable">${classPathVariableName}/client/jboss-common-client.jar</jar>
        <jar type="variable">${classPathVariableName}/client/jbosssx-client.jar</jar>
        <jar type="variable">${classPathVariableName}/client/log4j.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jnpserver.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/javax.servlet.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/javax.servlet.jsp.jar</jar>
    </clientClassPath>
    <projectClassPath>
        <jar type="variable">JDK_TOOLS</jar>
        <jar type="variable">${classPathVariableName}/bin/run.jar</jar>
        <jar type="variable">${classPathVariableName}/bin/shutdown.jar</jar>
        <jar type="variable">${classPathVariableName}/client/jboss-j2ee.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/jboss-system.jar</jar>
        <jar type="variable">${classPathVariableName}/lib/concurrent.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jnpserver.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jpl-pattern.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jpl-util.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-transaction.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/bcel.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/javax.servlet.jar</jar>
        <jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/javax.servlet.jsp.jar</jar>
    </projectClassPath>
    </serverDefinition>
    

     然后切換到Eclipse,效果如下圖
     
     
     4. 切換到主界面,點擊“窗口”菜單->定制透視圖

    最后,確定即可。
     
    1. 新建一個項目
     
    ●  右擊“包資源管理器”的空白處, 在彈出菜單中選擇“新建” ->“Lomboz J2EE Project”  
    ·項目名:HelloEJB 
    ·EJB Modules:helloEJB
    ·Targeted Server:  JBoss 4.0.0
     
    效果如下:(利用下圖中的小倒三角按鈕將引入的 JBoss 庫文件過濾了 )
     
     
    2. xdoclet.xml 的修改: 
     
      打開 build.xml 和 xdoclet.xml ,仔細看看里面的內容。
     
      如果你看過關于 XDoclet 方面的文章,那么應該比較明白 Lomboz 開發 EJB 的運行方式。其實就是 Ant + XDoclet  ,這里著重談談 xdoclet.xml 文件。

    xdoclet.xml

      1: <?xml version="1.0"?>
      2:
      3: <!-- Copyright (c) 2002,2003,2004 by eteration a.s.
      4:       www.eteration.com
      5:       All rights reserved. -->
      6:
      7:
      8: <project name="xdocletBuild" default="ejbdoclet" basedir=".">
      9:
    10:    <!-- Init -->
    11:    <target name="init">
    12:       <property file="build.properties"/>
    13:
    14:       <property name="ejb.dd.dir" value="../META-INF"/>
    15:       <property name="web.dd.dir" value="../WEB-INF"/>
    16:       <property name="xdoclet.force" value="true"/>
    17:       <property name="container.type" value="ejb-jar"/>
    18:      
    19:      <!-- Set up java.class.path -->
    20:       <path id="project.class.path">
    21:         <pathelement location="${project.dir}/${bin.dir}" />
    22:
    23:
    24:       <fileset dir="${eclipse.home}/plugins">
    25:         <include name="**/ant.jar"/>
    26:         <include name="**/sf.net.xdoclet*/*.jar"/>
    27:         <include name="**/org.apache.log4j*/**/*.jar"/>
    28:         <include name="**/org.apache.commons*/**/*.jar"/>
    29:       </fileset>
    30:
    31:         <!-- append the external classpath lastly -->
    32:         <pathelement path="${java.class.path}" />
    33:        
    34:         <!-- append the path sent through eclipse to classpath -->
    35:         <pathelement path="${project.path}" />
    36:        
    37:      </path>
    38:
    39:
    40:    </target>
    41:
    42:    <!-- Run EJBDoclet -->
    43:    <target name="ejbdoclet" depends="init">
    44:
    45:     <taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask">
    46: <classpath refid="project.class.path"/>
    47: </taskdef>
    48:
    49:
    50:       <ejbdoclet
    51:             destdir="${project.dir}/${ejbsrc.dir}"
    52:             mergedir="${ejb.dd.dir}"
    53:             excludedtags="@version,@author,@todo"
    54:             addedtags="@lomboz generated"
    55:             ejbspec="2.0"
    56:             force="${xdoclet.force}"
    57:             verbose="true" >
    58:
    59: <!-- PLEASE KEEP THE BEAN MARKER COMMENTS IF YOU MODIFY THE FILE.
    60:      CONTENTS BETWEEN THE MARKERS ARE AUTO INSERTED WITH EACH
    61:      BUILD. -->
    62: <!-- BEANS START -->
    63:    <fileset dir="../../src" defaultexcludes="yes">
    64:      <patternset includesfile="ejbs.xml" />
    65:    </fileset>
    66: <!-- BEANS END -->
    67:
    68:          <dataobject/>
    69:          <dao pattern="{0}" destdir="${project.dir}/${ejbsrc.dir}"/>
    70:         
    71:          <valueobject/>
    72:          <utilobject cacheHomes="true" includeGUID="true" kind="physical"/>
    73:         
    74:          <remoteinterface/>
    75:          <localinterface/>
    76:          <homeinterface />
    77:          <localhomeinterface/>
    78:         
    79:          <entitypk/>
    80:          <entitycmp/>
    81:          <entitybmp/>
    82:          <session/>
    83:
    84:          <deploymentdescriptor
    85:             destdir="${ejb.dd.dir}"
    86:             validatexml="false"
    87:             mergedir="${ejb.dd.dir}"
    88:             />
    89:
    90:          <!--
    91:          Have struts form objects generated based on entity beans'
    92:          data objects.  Will require struts.jar to compile. -->
    93:          <strutsform />
    94:
    95:
    96:          <!--
    97:          Have a mapping.xml file generated for castor classes.
    98:          -->
    99:          <castormapping destdir="${ejb.dd.dir}" validatexml="false" />
    100:          <!-- -->
    101:
    102:       <weblogic
    103:          version="6.1"
    104:          xmlencoding="UTF-8"
    105:          destdir="${ejb.dd.dir}"
    106:          validatexml="false"
    107:          datasource="PLEASE_MODIFY_THIS"
    108:          mergedir="${ejb.dd.dir}"
    109:          persistence="weblogic"
    110:       />
    111:   <jboss
    112:             version="3.0"
    113:             unauthenticatedPrincipal="nobody"
    114:             xmlencoding="UTF-8"
    115:             destdir="${ejb.dd.dir}"
    116:             validatexml="false"
    117:         datasource="PLEASE_MODIFY_THIS"
    118:             datasourcemapping="PLEASE_MODIFY_THIS"
    119:             preferredrelationmapping="PLEASE_MODIFY_THIS"
    120:           />
    121:          
    122:           <jrun
    123:                 version="4.0"
    124:                 xmlencoding="UTF-8"
    125:                 destdir="${ejb.dd.dir}"
    126:                 validatexml="false"
    127:                 />
    128:
    129:            <webSphere destdir="${ejb.dd.dir}"/>
    130:             <jonas
    131:                 version="3.2"
    132:                 xmlencoding="UTF-8"
    133:                 destdir="${ejb.dd.dir}"
    134:                 validatexml="false"
    135:             mergedir="${ejb.dd.dir}"
    136:                 />
    137:
    138:             <orion
    139:             destdir="${ejb.dd.dir}"
    140:             />
    141:
    142:             <apachesoap
    143:             destdir="${ejb.dd.dir}"
    144:             />
    145:         
    146:       </ejbdoclet>
    147:    </target>
    148:
    149: </project>
     
    · 采用 links 方式安裝 Lomboz 插件不能運行 XDoclet 的原因及補救方法:
    24:       <fileset dir="${eclipse.home}/plugins">
    25:         <include name="**/ant.jar"/>
    26:         <include name="**/sf.net.xdoclet*/*.jar"/>
    27:         <include name="**/org.apache.log4j*/**/*.jar"/>
    28:         <include name="**/org.apache.commons*/**/*.jar"/>
    29:       </fileset>
     
     · 從第24行和26行可以看到,Lomboz 是從“Eclipse安裝目錄\plugins\”的目錄下尋找 “sf.net.xdoclet_1.2.1” 子目錄中的 *.jar 文件來運行 XDoclet的。 由于采用了 links 方式安裝插件,所以會找不到 “sf.net.xdoclet_1.2.1” 這個目錄,無法加載 XDoclet的庫文件。
     
    ●  修改方法
     
     · 不采用 links 方式安裝 Lomboz 插件;
     · 若采用 links 方式安裝插件,將其 Lomboz 插件目錄下的那三個目錄(即上面的三個目錄)復制到 “Eclipse安裝目錄\plugins\”的目錄下;   
     · 直接修改xdoclet.xml 文件,將“${eclipse.home}/plugins”替換成 links 方式下的插件目錄;如這里,我將它替換成了<fileset dir="D:/eclipse/myplugins/lomboz-3.0.1/eclipse/plugins">     
     · 將1.2.2版本的庫文件路徑加入到類路徑中。
       注意到沒有,這個版本是1.2.1,而當前版本是1.2.2;所以最好將自己下載的1.2.2版本的 Xdoclet中的庫文件替換掉1.2.1版本的庫文件,不然某些功能可能無法在 JBoss 4.0.0 配合使用。
     
    ● 其它修改的地方
     
    · 看55行,生成的是2.0版本規范的EJB,當然要改成“2.1”了,人要往高處走啊。
    55:             ejbspec="2.0"
     
    · 從102行到140行,可以看出 Lomboz 可以使用 weblogic 、jboss、webSphere 等服務器,由于這里我只使用 jboss開發EJB,所以只需要保留 jboss 項就夠了,避免生成太多的服務器配置文件。
       既然使用 jboss 了,也不是拿來就用的,修改一下,使它更適合自己。
    (有關數據庫的配置,下篇文章詳細說明,是為了開發實體Bean設置的)
     
     
    修改后的 XDoclet 文件

    xdoclet.xml

    <?xml version="1.0" encoding="GBK"?>
    <!-- 
      Copyright (c) 2002, 2003,2004 Eteration Bilisim A.S.
      Naci Dai and others.
      
      Parts developed under contract ref:FT/R&D/MAPS/AMS/2004-09-09/AL are 
      Copyright France Telecom, 2004.
      
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
      http://www.eclipse.org/legal/epl-v10.html
      
      Contributors:
          Eteration Bilisim A.S. - initial API and implementation
          Naci Dai
      For more information on eteration, please see
      <http://www.eteration.com/>.
     -->
    
    <project name="xdocletBuild" default="ejbdoclet" basedir=".">
       <!-- Init -->
       <target name="init">
          <property file="build.properties"/>
          <property name="ejb.dd.dir" value="../META-INF"/>
          <property name="web.dd.dir" value="../WEB-INF"/>
          <property name="xdoclet.force" value="true"/>
          <property name="container.type" value="ejb-jar"/>
          
          <!-- Set up java.class.path -->
          <path id="project.class.path">
            <pathelement location="${project.dir}/${bin.dir}" />
            <!-- 由于使用links方式安裝Lomboz插件,所以需要修改這個目錄,使其
                  正確指向Lomboz目錄,還建議使用1.2.2版本的XDoclet 目錄下的庫
                  文件來代替 sf.net.xdoclet* 目錄下的庫文件
             -->
           <fileset dir="D:/eclipse/myplugins/lomboz-3.0.1/eclipse/plugins">
             <include name="**/ant.jar"/>
             <include name="**/sf.net.xdoclet*/*.jar"/>
             <include name="**/org.apache.log4j*/**/*.jar"/>
             <include name="**/org.apache.commons*/**/*.jar"/>
           </fileset>
           
            <!-- append the external classpath lastly -->
            <pathelement path="${java.class.path}" />
            
            <!-- append the path sent through eclipse to classpath -->
            <pathelement path="${project.path}" />
            
         </path>
    
       </target>
       <!-- Run EJBDoclet -->
       <target name="ejbdoclet" depends="init">
        <taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask">
      <classpath refid="project.class.path"/>
     </taskdef>
    
          <ejbdoclet
                destdir="${project.dir}/${ejbsrc.dir}"
                mergedir="${ejb.dd.dir}"
                excludedtags="@version,@author,@todo"
                addedtags="@lomboz generated"
                ejbspec="2.1"
                force="${xdoclet.force}"
                verbose="true" >
    <!-- PLEASE KEEP THE BEAN MARKER COMMENTS IF YOU MODIFY THE FILE. 
         CONTENTS BETWEEN THE MARKERS ARE AUTO INSERTED WITH EACH 
         BUILD. -->
    <!-- BEANS START -->
        <fileset dir="../../src" defaultexcludes="yes">
          <patternset includesfile="ejbs.xml" />
        </fileset>
    <!-- BEANS END -->
             <dataobject/>
             <dao pattern="{0}" destdir="${project.dir}/${ejbsrc.dir}"/>
             
             <valueobject/>
             <utilobject cacheHomes="true" includeGUID="true" kind="physical"/>
             
             <remoteinterface/>
             <localinterface/>
             <homeinterface />
             <localhomeinterface/>
             
             <entitypk/>
             <entitycmp/>
             <entitybmp/>
             <session/>
             <deploymentdescriptor 
                destdir="${ejb.dd.dir}" 
                validatexml="false"
                mergedir="${ejb.dd.dir}" 
                />
             <!--
             Have struts form objects generated based on entity beans'
             data objects.  Will require struts.jar to compile. -->
             <strutsform />
    
             <!--
             Have a mapping.xml file generated for castor classes.
             -->
             <castormapping destdir="${ejb.dd.dir}" validatexml="false" />
             <!-- -->
             
             <jboss
                version="4.0"
                unauthenticatedPrincipal="nobody"
                xmlencoding="GBK"
                destdir="${ejb.dd.dir}"
                validatexml="false"
                datasource="java:/MySqlDS"
                datasourcemapping="mySQL"
                preferredrelationmapping="foreign-key"
              />
              
             
              <apachesoap 
                destdir="${ejb.dd.dir}"
              />
                                  
          </ejbdoclet>
       </target>
    </project>
    

    小技巧:   
     
       以后我都會用這個文件來執行 XDoclet, 如果每次新建一個項目都修改它的話,有些麻煩。這里有一個方法,找到 Lomboz 插件目錄下的“ com.objectlearn.jdt.j2ee_3.0.1”子目錄,發現有個“lomboz.jar”文件,解壓這個文件,在解壓后的文件中的“com\objectlearn\jdt\j2ee\templates\ejb” 目錄有個“xdoclet.xml”,打開它看看,是不是和項目中的 xdoclet.xml 一樣。你可以將修改后的 xdoclet.xml 替換掉這里的 xdoclet.xml,那么就不用每次都修改xdoclet.xml 了。
     
       花了這么大的力氣談 xdoclet.xml,因為它是Lomboz開發EJB的核心,希望不會太羅嗦。
     
     
    3. 編寫程序
     
    ●  繼續在 HelloEJB 項目中,右擊“src” ->新建 ->Lomboz EJB Creation Wizard :
    · 包(K) :javamxj.ejb.stateless
    · 名稱(M): Hello
    · EJB Type: 選擇 Stateless 
       最后點擊完成。
     
     
     
    ● 在“包資源管理器”窗口中,右擊 HelloBean.java ->Lomboz J2EE... ->Add EJB to Module... :勾選 helloEJB Module。
    提醒
    這時,會在 xdoclet.xml 中添加以下語句:
    <fileset dir="${project.dir}/src/" defaultexcludes="yes">
      <include name="javamxj/ejb/stateless/HelloBean.java" />
    </fileset>
    同時,在 beans.xml 中會加入
      <bean>
        <beanClass>javamxj.ejb.stateless.HelloBean</beanClass>
        <type>Session</type>
      </bean>
    這樣,就把 HelloBean.java 加入了 EJBDoclet 的任務中了。
     
    ● 右擊 HelloBean.java ->Lomboz J2EE... ->Add EJB to Method:
     ·  Method Signature: public String sayHello(String message)
     ·  Method Type:     Business Method
     ·  Interface Type:   Remote Interface
     
    ● 修改 HelloBean.java ,如圖在45-47行添加如下語句,然后保存。
     
    ● 右擊 helloEJB 模塊 ->Lomboz J2EE... ->Generate EJB Classes
       看到沒有?在 ejbsrc 文件夾下生成了6個文件。
     
     
     
    4. jboss-ide 的一些技巧
     
      其實這里沒有必要生成 HelloLocal.java HelloLocalHome 這兩個文件,可以通過修改ejb.bean標記來除去這兩個文件。
     
      JBoss-IDE 現在已經改名 JBoss Eclipse IDE 了,為了方便,我在下文中還是稱為 JBoss-IDE。
     
      關于 JBoss-IDE 的詳細用法,請參考其主頁上的教程。這里簡單說一些技巧。
     
    · 切換倒主窗口
     
    · 向下拉動滾動條,選擇“view-type”這個屬性,然后點擊,如下圖:
       這里選擇點擊“remote”。
       這樣 view-type = "remote" 這個語句就輸入了,方便吧!主要免去記憶和查找之苦。 
     
     
    · 保存,然后刪除 ejbsrc 這個文件夾,再次 Generate EJB Classes,這么樣,這時會發現生成的 ejbsrc文件夾下只有4個文件了吧。
     
    · 本來沒有必要刪除那兩個文件的,插上這么一段主要是為了介紹使用 JBoss-IDE 的方便之處。其實,JBoss-IDE 的好處還很多,自己慢慢體會吧。

    提醒
       打開JBoss-IDE目錄下的子目錄 D:\eclipse\myplugins\jboss-ide-1.40\eclipse\plugins\org.jboss.ide.eclipse.xdoclet.core_1.4.0 (我采用的 links 方式安裝),發現其中的XDoclet庫文件是1.2.1版本,最好用1.2.2版本下對應的庫文件將其替換掉,其它文件不要亂動。
       另外,還可以添加其它如 IBM、BEA 的庫文件到這個目錄,使 JBoss-IDE 不僅僅支持 JBoss,還可以支持其它服務器,甚至自己編寫庫文件也可以加入。
       還有,至于“Alt+/”是干什么的,可以查看: Eclipse的主窗口 ->幫助 ->提示與技巧 ->Eclipse Java 開發工具,很不錯的。

     

    5. 運行服務器
     
       廢話也說的差不多了,再次進入正題。
     
    · 先啟動服務器
     如圖,有多種方法可以啟動JBoss服務器。其它操作也是一樣,最好自己多練習,多用右鍵。
     
     
    · 然后右擊 helloEJB,在彈出菜單中選擇部署模塊。如果一切正常,控制臺會輸出類似語句:
    21:51:46,203 INFO  [EjbModule] Deploying Hello
    21:51:47,656 INFO  [EJBDeployer] Deployed: file:/F:/java/jboss/server/default/deploy/helloEJB.jar
     
      好了,服務端已經就緒了。
     
     
    6.開發客戶端:
     
    · 右擊 src 文件夾 ->新建 ->Lomboz EJB Test Client  Wizard:
       其中“包”和“名稱”要自己手工輸入,“EJB Home” 和 “EJB Interface” 可以通過選擇輸入。

     
      
    · 這時會生成一個“HelloClient.java”的文件,打開它,如圖添加兩條語句。
     
    · 保存,然后運行 HelloClient.java,可以在控制臺看到輸出結果:
     
    ·此時,服務端輸出:
    22:25:45,156 INFO  [STDOUT] 我在EJB的服務器端,客戶端正在調用'sayHello'方法。
    22:25:45,156 INFO  [STDOUT] Hello  javamxj(CSDN)
    posted on 2005-02-16 15:29 jacky 閱讀(3745) 評論(7)  編輯  收藏 所屬分類: Open source

    FeedBack:
    # 為何不能生成實體bean
    2005-07-10 21:16 | 陽光
    20:58:22,781 INFO [EJBDeployer] Deployed: file:/D:/jboss-4.0.0/server/default/deploy/cmpEJB.jar
    20:58:22,812 ERROR [URLDeploymentScanner] Incomplete Deployment listing:
    MBeans waiting for other MBeans:
    ObjectName: jboss.j2ee:service=EJB,plugin=pool,jndiName=User
    state: CREATED
    I Depend On:
    Depends On Me:
    ObjectName: jboss.j2ee:jndiName=User,service=EJB
    state: FAILED
    I Depend On:
    Depends On Me: org.jboss.deployment.DeploymentException: Error: can't find data source: MySql; - nested throwable: (javax.naming.NameNotFoundException: MySql not bound)

    MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM:
    ObjectName: jboss.j2ee:jndiName=User,service=EJB
    state: FAILED
    I Depend On:
    Depends On Me: org.jboss.deployment.DeploymentException: Error: can't find data source: MySql; - nested throwable: (javax.naming.NameNotFoundException: MySql not bound)
    ObjectName: jboss.j2ee:service=EJB,plugin=pool,jndiName=User
    state: CREATED
    I Depend On:
    Depends On Me:

    大家能不能幫我看看,是哪的問題,是不是數據庫的問題啊,還請高手幫忙!!!
      回復  更多評論
      
    # re: Eclipse快速上手EJB -- 1. Lomboz + JBoss-IDE 配置1
    2005-07-11 17:11 | test
    can't find data source: MySql;

    看看這句,數據配置的正確么?  回復  更多評論
      
    # re: Eclipse快速上手EJB -- 1. Lomboz + JBoss-IDE 配置1
    2005-11-28 13:36 | raymond
    為什么提醒我jboss-boot。jar找不到啊?是什么原因
    謝謝  回復  更多評論
      
    # re: Eclipse快速上手EJB -- 1. Lomboz + JBoss-IDE 配置1
    2006-03-30 09:06 | 立軍
    拜托,急!急!急!
    我嚴格按要求做
    為什么lomboz和jboss-ide插件總是裝不上?


    · lomboz和jboss-ide 我都是采用links方式安裝的
    。。。
    path=c:/plug-in/lomboz
    path=c:/plug-in/jboss-ide
    ...
    解壓的plugins在如下目錄
    c:\plug-in\lomboz\eclipse\plugins\...
    c:\plug-in\jboss-ide\eclipse\plugins\...

    重起Elclipse前刪除了configuration 子目錄

    email:mtlzhen@gmail.com

      回復  更多評論
      
    # re: Eclipse快速上手EJB -- 1. Lomboz + JBoss-IDE 配置1
    2006-03-30 09:10 | 绔嬪啗
    并在Eclipse目錄下建了links子目錄,links子目錄中存入lomboze.link內容為上面兩句path  回復  更多評論
      
    # re: Eclipse快速上手EJB -- 1. Lomboz + JBoss-IDE 配置1
    2006-03-30 09:18 | 绔嬪啗
    并在Eclipse目錄下建了links子目錄,links子目錄中存入lomboze.link內容為上面兩句path  回復  更多評論
      
    # re: Eclipse快速上手EJB -- 1. Lomboz + JBoss-IDE 配置1
    2006-08-17 09:13 | zhaohongji
    非常感謝!!!  回復  更多評論
      
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(10)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    java

    搜索

    •  

    最新評論


    主站蜘蛛池模板: 亚洲一区综合在线播放| 亚洲制服在线观看| 久久免费看黄a级毛片| 亚洲不卡中文字幕| 亚洲AV中文无码乱人伦| 99视频在线免费| 亚洲日韩精品无码专区加勒比☆| 亚洲福利视频一区二区| 99视频在线免费看| 暖暖免费中文在线日本| 久久精品国产亚洲AV无码娇色 | 成人性做爰aaa片免费看| 亚洲乱码中文论理电影| 免费播放特黄特色毛片| 毛片免费全部播放无码| 四虎影视在线看免费观看| 亚洲黄色高清视频| 亚洲精品视频久久久| 免费观看的毛片大全| 91成人免费观看在线观看| 亚洲色大成WWW亚洲女子| 亚洲av无码一区二区三区乱子伦| 夜夜嘿视频免费看| 国产免费爽爽视频在线观看| 亚洲第一综合天堂另类专| 亚洲国产精品无码久久久蜜芽| 国产精品久久香蕉免费播放| 国产h肉在线视频免费观看| a毛片免费全部播放完整成| wwwxxx亚洲| 亚洲网址在线观看你懂的| 亚洲精品国产电影| 成人男女网18免费视频| 亚洲视频在线观看免费| 国产成人无码精品久久久久免费 | 亚洲fuli在线观看| 亚洲乱码中文字幕久久孕妇黑人| 国产在线播放免费| 国产乱码免费卡1卡二卡3卡| 99免费视频观看| 国产亚洲免费的视频看|