怎样运行ejb程序? 你用JB9+Weblogic7SP2开发EJB好了你可以到CSDN的文档中心找一下基本的资料啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ejb需要发布和部署,可以用Weblogic或Webspere to dwju1981(灭日屠美) 能具体点吗? 转载的,希望对你有帮助EJB的打包及部署---------一、EJB的目录结构EJBRoot/(class文件,bean/homeInterface/RemoteInterface ,可以是子目录) | +META-INF/- + | +ejb-jar.xml |+ weblogic-ejb-jar.xml|+weblogic-cmp-rdbms-jar.xml(CMP类型的entity Bean需要此文件,我们采用的是BMP类型的,不需要这个文件。)二、生成ejb-jar.xmlejb-jar.xml用于描述EJB的结构信息,具体的介绍参考weblogic6.0帮助中的.\ejb\ejb_deployover.html。也可以参考http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd.以下举例说明:<?xml version="1.0"?><!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'><ejb-jar><!--所有的Bean的结构要在<enterprise-beans>与</enterprise-beans>中说明 --><enterprise-beans><!--每一个entity Bean要在<entity>与</entity>中说明其结构 --><entity> <!-- entityBeanA不是JNDI Name,在weblogic-ejb-jar.xml中映射到JNDI Name--> <ejb-name>entityBeanA</ejb-name> <home>pkg.EjbAHome(Home接口的全路径类名) </home> <remote> pkg. EjbA (Remote接口的全路径类名)</remote> <ejb-class>pkg.EjbABean(Bean的全路径类名)</ejb-class> <persistence-type>Bean(表示由Container/Bean管理持续存储)</persistence-type> <prim-key-class>java.lang.String(Bean的主键类的全路径类名)</prim-key-class> <reentrant>False(True/False)</reentrant> <ejb-ref>(EjbABean中使用的其它的Bean)<!-- ejb/entityBeanB不是JNDIName,也不是<ejb-name>中指定的名字,在weblogic-ejb-jar.xml中映射到JNDI Name,建议已ejb/开头命名 --><ejb-ref-name>ejb/entityBeanB</ejb-ref-name><ejb-ref-type>Entity(Entity/Session)</ejb-ref-type><home>pkg.EjbBHome</home><remote>pkg.EjbB </remote> <!-- <ejb-link>中的entityBeanB是<ejb-name>中指定的名字 --><ejb-link>entityBeanB</ejb-link></ejb-ref> <resource-ref>(使用的资源,可能不仅仅指数据源,我们仅使用数据源) <res-ref-name>jdbc/demoPool(这个名字不是JNDI Name)</res-ref-name> <res-type>javax.sql.DataSource(该资源类型是JDBC数据源)</res-type> <res-auth>Container(表示由Container/Bean管理该资源)</res-auth> </resource-ref></entity><entity> <ejb-name>entityBeanB</ejb-name> ……………</entity><!--每一个Session Bean要在<session>与</session>中说明其结构 --><session><ejb-name>sessionBeanC</ejb-name> <home>pkg.EjbCHome(Home接口的全路径类名) </home> <remote> pkg. EjbC (Remote接口的全路径类名)</remote> <ejb-class>pkg.EjbCBean(Bean的全路径类名)</ejb-class> <session-type>Stateful(Stateful/Stateless)</session-type> <transaction-type>Container(Container/Bean)</transaction-type><ejb-ref>……与entity Bean格式的相同</ejb-ref></session><session><ejb-name>sessionBeanD</ejb-name>………</session></enterprise-beans><!—assembly-descriptor 的作用还不是很清楚,主要是处理安全角色,方法许可,事务属性等信息,下面只说明了事务属性,有关安全角色、方法许可还有待研究--><assembly-descriptor> <!—可能是指定下列方法由容器负责进行事务处理--><container-transaction><method> <ejb-name>entityBeanA</ejb-name><!—指定方法是Home接口的方法还是Remote接口的方法,可以不指定--><method-intf>Remote(Remote/Home)</method-intf><method-name>*(指定所有方法,也可以通过方法名指定)</method-name></method><method>…..</method><!—指定以上method进行事务处理的方式:NotSupported、 Supports、Required、RequiresNew、Mandatory、Neverà<trans-attribute>Required</trans-attribute></container-transaction><container-transaction>……………</container-transaction></assembly-descriptor></ejb-jar>三、生成weblogic-ejb-jar.xml具体的介绍参考weblogic6.0帮助中的.\ejb\reference.html<?xml version="1.0"?><!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN' 'http://www.bea.com/servers/wls510/dtd/weblogic-ejb-jar.dtd'><weblogic-ejb-jar><weblogic-enterprise-bean><ejb-name> entityBeanA (对应ejb-jar.xml中的<ejb-name>)</ejb-name><!—指定该Bean允许在内存中最大的实例数量,可以不指定,默认=100--><caching-descriptor><max-beans-in-cache>100</max-beans-in-cache></caching-descriptor><reference-descriptor><resource-description><!--对应ejb-jar.xml中的<res-ref-name>--><res-ref-name>jdbc/demoPool</res-ref-name><!--Weblogic中数据源的jndi Name--><jndi-name>myDataSource</jndi-name></resource-description><ejb-reference-description><!--对应ejb-jar.xml中的< ejb-ref-name ><ejb-ref-name> ejb/entityBeanB </ejb-ref-name><jndi-name>myApp. EntityBeanB</jndi-name></ejb-reference-description></reference-descriptor><jndi-name>myApp.EntityBeanA(客户端要lookup的jndi name)</jndi-name></weblogic-enterprise-bean><ejb-name> entityBeanB (对应ejb-jar.xml中的<ejb-name>)</ejb-name>……….<jndi-name>myApp.EntityBeanB</jndi-name><weblogic-enterprise-bean></weblogic-enterprise-bean></weblogic-ejb-jar>四、生成weblogic-cmp-rdbms-jar.xml ,我们不使用,忽略五、利用JAR工具将整个目录中的文件打包成.JAR文件。 cd EJBRoot (EJBRoot目录)Jar cvf myApp.jar .六、利用weblogic.ejbc”编译”.jar文件回到EjbRoot的上一层目录(好像在EJBRoot中也可以,但是会产生错误信息)。cd..javac weblogic.ejbc EJBRoot/myApp.jar myApp.jar完毕后会在EjbRoot的上一层目录产生”编译”后的myApp.jar,此文件作为部署文件。注意:执行weblogic.ejbc必须在环境变量ClassPath中包括.\bea\wlserver6.0\lib\Weblogic.jar我们可以制作一个批文件ejbc.bat,如下@echo offSETLOCALSet CLASSPATH=%CLASSPATH%;C:\bea\wlserver6.0\lib\Weblogic_sp.jar;C:\bea\wlserver6.0\lib\Weblogic.jar;C:\bea\utils\utils.jar;C:\bea\wlserver6.0\lib\cr_wls60f.jar;C:\bea\wlserver6.0\lib\JSQLConnect.jarset JAVA_HOME=C:\bea\jdk130"%JAVA_HOME%\bin\java" -classpath %CLASSPATH% weblogic.ejbc %1 %2ENDLOCAL执行 ejbc EJBRoot/myApp.jar myApp.jar即可。也可以先执行BEA_HOME\config\mydomain\setEnv.cmd来设置环境变量,然后执行weblogic.ejbc七、部署EJBApp打开Weblogic的控制台。在左边树中点击domain/Deployments/EJB节点.在右边选择”Install a new EJB…”超链接通过”浏览”按钮选择第四步生产的.JAR文件。点击”Upload”部署EJBApp。附:我们可以把五、六合起来,写成一个批文件 make.bat@echo offSETLOCALSet CLASSPATH=%CLASSPATH%;C:\bea\wlserver6.0\lib\Weblogic_sp.jar;C:\bea\wlserver6.0\lib\Weblogic.jar;C:\bea\utils\utils.jar;C:\bea\wlserver6.0\lib\cr_wls60f.jar;C:\bea\wlserver6.0\lib\JSQLConnect.jarset JAVA_HOME=C:\bea\jdk130cd %1%JAVA_HOME%\bin\jar cvf %2 .cd .."%JAVA_HOME%\bin\java" -classpath %CLASSPATH% weblogic.ejbc %1\%2 %2cd %1del %2ENDLOCALMake c:\myapp aaa.jar EJB只是个组件,只能部署到EJB容器上才可以运行。用JB+WEBLOGIC8.1的话,很方便就可以完成部署。查查资料,应该有很多这方面的。 EJB是一种中间件,它不能直接运行只能被调用。用jbuilder和weblogic开发简单、方便。 讨论一下orm的效率问题 线程!!!隐藏线程 hibernate缓存机制的问题 高手帮忙,求救 面试Java工程师的时候会问到那些问题?? ireport连接数据库问题 JAVA中文件流转化(高手进) XML问题 请问关于调用SessionBean的客户端的问题 有人说PHP只适合开中小型网站,这是为何? CMP测试最基础的问题 ISO8859-1的作用是?
能具体点吗?
EJB的打包及部署---------
一、EJB的目录结构
EJBRoot/(class文件,bean/homeInterface/RemoteInterface ,可以是子目录)
|
+META-INF/- +
|
+ejb-jar.xml
|
+ weblogic-ejb-jar.xml
|
+weblogic-cmp-rdbms-jar.xml(CMP类型的entity Bean
需要此文件,我们采用的是BMP类型的,不需要这个文件。)二、生成ejb-jar.xml
ejb-jar.xml用于描述EJB的结构信息,具体的介绍参考weblogic6.0帮助中的.\ejb\ejb_deployover.html。也可以参考http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd.以下举例说明:
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>
<ejb-jar>
<!--所有的Bean的结构要在<enterprise-beans>与</enterprise-beans>中说明 -->
<enterprise-beans>
<!--每一个entity Bean要在<entity>与</entity>中说明其结构 -->
<entity>
<!-- entityBeanA不是JNDI Name,在weblogic-ejb-jar.xml中映射到JNDI Name-->
<ejb-name>entityBeanA</ejb-name>
<home>pkg.EjbAHome(Home接口的全路径类名) </home>
<remote> pkg. EjbA (Remote接口的全路径类名)</remote>
<ejb-class>pkg.EjbABean(Bean的全路径类名)</ejb-class>
<persistence-type>Bean(表示由Container/Bean管理持续存储)</persistence-type>
<prim-key-class>java.lang.String(Bean的主键类的全路径类名)</prim-key-class>
<reentrant>False(True/False)</reentrant>
<ejb-ref>(EjbABean中使用的其它的Bean)
<!-- ejb/entityBeanB不是JNDIName,也不是<ejb-name>中指定的名字,在
weblogic-ejb-jar.xml中映射到JNDI Name,建议已ejb/开头命名 -->
<ejb-ref-name>ejb/entityBeanB</ejb-ref-name>
<ejb-ref-type>Entity(Entity/Session)</ejb-ref-type>
<home>pkg.EjbBHome</home>
<remote>pkg.EjbB </remote>
<!-- <ejb-link>中的entityBeanB是<ejb-name>中指定的名字 -->
<ejb-link>entityBeanB</ejb-link>
</ejb-ref>
<resource-ref>(使用的资源,可能不仅仅指数据源,我们仅使用数据源)
<res-ref-name>jdbc/demoPool(这个名字不是JNDI Name)</res-ref-name>
<res-type>javax.sql.DataSource(该资源类型是JDBC数据源)</res-type>
<res-auth>Container(表示由Container/Bean管理该资源)</res-auth>
</resource-ref>
</entity>
<entity>
<ejb-name>entityBeanB</ejb-name>
……………
</entity>
<!--每一个Session Bean要在<session>与</session>中说明其结构 -->
<session>
<ejb-name>sessionBeanC</ejb-name>
<home>pkg.EjbCHome(Home接口的全路径类名) </home>
<remote> pkg. EjbC (Remote接口的全路径类名)</remote>
<ejb-class>pkg.EjbCBean(Bean的全路径类名)</ejb-class>
<session-type>Stateful(Stateful/Stateless)</session-type>
<transaction-type>Container(Container/Bean)</transaction-type>
<ejb-ref>
……与entity Bean格式的相同
</ejb-ref>
</session>
<session>
<ejb-name>sessionBeanD</ejb-name>
………
</session>
</enterprise-beans><!—assembly-descriptor 的作用还不是很清楚,主要是处理安全角色,方法许可,事务属性等信息,下面只说明了事务属性,有关安全角色、方法许可还有待研究-->
<assembly-descriptor>
<!—可能是指定下列方法由容器负责进行事务处理-->
<container-transaction>
<method>
<ejb-name>entityBeanA</ejb-name>
<!—指定方法是Home接口的方法还是Remote接口的方法,可以不指定-->
<method-intf>Remote(Remote/Home)</method-intf>
<method-name>*(指定所有方法,也可以通过方法名指定)</method-name>
</method>
<method>
…..
</method>
<!—指定以上method进行事务处理的方式:NotSupported、 Supports、Required、RequiresNew、Mandatory、Neverà
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
……………
</container-transaction>
</assembly-descriptor>
</ejb-jar>三、生成weblogic-ejb-jar.xml
具体的介绍参考weblogic6.0帮助中的.\ejb\reference.html
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN' 'http://www.bea.com/servers/wls510/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name> entityBeanA (对应ejb-jar.xml中的<ejb-name>)</ejb-name>
<!—指定该Bean允许在内存中最大的实例数量,可以不指定,默认=100-->
<caching-descriptor>
<max-beans-in-cache>100</max-beans-in-cache>
</caching-descriptor>
<reference-descriptor>
<resource-description>
<!--对应ejb-jar.xml中的<res-ref-name>-->
<res-ref-name>jdbc/demoPool</res-ref-name>
<!--Weblogic中数据源的jndi Name-->
<jndi-name>myDataSource</jndi-name>
</resource-description>
<ejb-reference-description>
<!--对应ejb-jar.xml中的< ejb-ref-name >
<ejb-ref-name> ejb/entityBeanB </ejb-ref-name>
<jndi-name>myApp. EntityBeanB</jndi-name>
</ejb-reference-description>
</reference-descriptor>
<jndi-name>myApp.EntityBeanA(客户端要lookup的jndi name)</jndi-name></weblogic-enterprise-bean>
<ejb-name> entityBeanB (对应ejb-jar.xml中的<ejb-name>)</ejb-name>
……….
<jndi-name>myApp.EntityBeanB</jndi-name>
<weblogic-enterprise-bean>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>四、生成weblogic-cmp-rdbms-jar.xml ,我们不使用,忽略五、利用JAR工具将整个目录中的文件打包成.JAR文件。
cd EJBRoot (EJBRoot目录)
Jar cvf myApp.jar .
六、利用weblogic.ejbc”编译”.jar文件
回到EjbRoot的上一层目录(好像在EJBRoot中也可以,但是会产生错误信息)。
cd..
javac weblogic.ejbc EJBRoot/myApp.jar myApp.jar
完毕后会在EjbRoot的上一层目录产生”编译”后的myApp.jar,此文件作为部署文件。
注意:执行weblogic.ejbc必须在环境变量ClassPath中包括
.\bea\wlserver6.0\lib\Weblogic.jar
我们可以制作一个批文件ejbc.bat,如下
@echo off
SETLOCAL
Set
CLASSPATH=%CLASSPATH%;C:\bea\wlserver6.0\lib\Weblogic_sp.jar;C:\bea\wlser
ver6.0\lib\Weblogic.jar;C:\bea\utils\utils.jar;C:\bea\wlserver6.0\lib\cr_wls60f.jar;C:\be
a\wlserver6.0\lib\JSQLConnect.jar
set JAVA_HOME=C:\bea\jdk130
"%JAVA_HOME%\bin\java" -classpath %CLASSPATH% weblogic.ejbc %1 %2
ENDLOCAL执行 ejbc EJBRoot/myApp.jar myApp.jar即可。也可以先执行BEA_HOME\config\mydomain\setEnv.cmd来设置环境变量,然后
执行weblogic.ejbc七、部署EJBApp
打开Weblogic的控制台。
在左边树中点击domain/Deployments/EJB节点.
在右边选择”Install a new EJB…”超链接
通过”浏览”按钮选择第四步生产的.JAR文件。
点击”Upload”部署EJBApp。附:我们可以把五、六合起来,写成一个批文件 make.bat@echo off
SETLOCAL
Set CLASSPATH=%CLASSPATH%;C:\bea\wlserver6.0\lib\Weblogic_sp.jar;C:\bea\wlserver6.0\lib\Weblogic.jar;C:\bea\utils\utils.jar;C:\bea\wlserver6.0\lib\cr_wls60f.jar;C:\bea\wlserver6.0\lib\JSQLConnect.jar
set JAVA_HOME=C:\bea\jdk130
cd %1
%JAVA_HOME%\bin\jar cvf %2 .
cd ..
"%JAVA_HOME%\bin\java" -classpath %CLASSPATH% weblogic.ejbc %1\%2 %2
cd %1
del %2
ENDLOCALMake c:\myapp aaa.jar
用JB+WEBLOGIC8.1的话,很方便就可以完成部署。查查资料,应该有很多这方面的。