EJB2.0之HelloWorld版本

来源:互联网 发布:python 技术指标 编辑:程序博客网 时间:2024/04/30 13:20

开发工具:javaee版本的eclipse

jboss4.0、jdk1.6


经测试,ejb2,0似乎不能用jboss5来运行,所以改用jboss4。


用javaee版本的eclipse配置好jboss4。


新建ejb项目,选择jboss4和 ejb2.0。


然后加入java代码:

package com.ejb;import java.rmi.RemoteException;import javax.ejb.EJBObject;/** * 所有的业务方法都要在此接口中声明 */public interface Hello extends EJBObject {/** * 业务方法,组件接口中的业务方法必须抛出RemoteException * @param someOne * @return * @throws RemoteException */public String sayHello(String someOne) throws RemoteException;}

package com.ejb;import java.rmi.RemoteException;import javax.ejb.EJBException;import javax.ejb.SessionBean;import javax.ejb.SessionContext;import static java.lang.System.out;/** * 所有具体的业务逻辑都在此类里面,此类不抛出远程异常 */public class HelloBean implements SessionBean {private static final long serialVersionUID = 1L;@Overridepublic void ejbActivate() throws EJBException, RemoteException {out.println("ejbActivate");}@Overridepublic void ejbPassivate() throws EJBException, RemoteException {out.println("ejbPassivate");}@Overridepublic void ejbRemove() throws EJBException, RemoteException {out.println("ejbRemove");}@Overridepublic void setSessionContext(SessionContext arg0) throws EJBException,RemoteException {out.println("setSessionContext");}public void ejbCreate() {out.println("ejbCreate");}/** * 必须有这个方法,但是这个方法不是来自SessionBean接口的 * @param someOne * @return */public String sayHello(String someOne) {out.println("sayHello");return "Hello, " + someOne + "!";}}

package com.ejb;import java.rmi.RemoteException;import javax.ejb.CreateException;import javax.ejb.EJBHome;/** * Home接口必须扩展EJBHome或者EJBLocalHome接口 * 客户使用Home接口来请求组件接口的一个引用 * 可以将Home接口看做是一个工厂,它能制造Bean的引用个,而且能向客户分配bean引用 */public interface HelloHome extends EJBHome {public Hello create() throws CreateException, RemoteException;}

在META-INF目录,修改文件ejb-jar.xml:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'                 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'><ejb-jar><display-name>Hello EJB</display-name><enterprise-beans><session><display-name>helloEJB</display-name><ejb-name>helloEJB</ejb-name><home>com.ejb.HelloHome</home><remote>com.ejb.Hello</remote><ejb-class>com.ejb.HelloBean</ejb-class><session-type>Stateless</session-type><transaction-type>Bean</transaction-type><security-identity><description></description><use-caller-identity></use-caller-identity></security-identity></session></enterprise-beans></ejb-jar>

增加文件jboss.xml:

<?xml version="1.0" encoding="UTF-8"?><jboss><enterprise-beans><session><ejb-name>helloEJB</ejb-name><jndi-name>ejb/helloEJB</jndi-name></session></enterprise-beans></jboss>

然后运行Run on Server。


编写测试代码:

package com.ejb.client;import java.rmi.RemoteException;import java.util.Properties;import javax.ejb.CreateException;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.rmi.PortableRemoteObject;import com.ejb.Hello;import com.ejb.HelloHome;public class TestClient {/** * @param args * @throws NamingException * @throws CreateException  * @throws RemoteException  */public static void main(String[] args) throws NamingException, RemoteException, CreateException {Properties props = new Properties();props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");props.setProperty("java.naming.provider.url", "localhost:1099");// 初始化JNDI上下文环境,因为客户端不知道JBOSS的环境InitialContext ctx = new InitialContext(props);// 检索指定的对象Object objref = ctx.lookup("ejb/helloEJB");// 强制转换为所需类型的对象HelloHome home = (HelloHome) PortableRemoteObject.narrow(objref, HelloHome.class);// 通过home对象创建一个组件接口对象Hello hello = home.create();// 通过组件接口对象调用业务方法String msg = hello.sayHello("ejb");System.out.println(msg);}}

客户端输出:

Hello, ejb!

服务端输出:

14:41:33,515 INFO  [Server] Starting JBoss (MX MicroKernel)...14:41:33,515 INFO  [Server] Release ID: JBoss [Zion] 4.0.0 (build: CVSTag=JBoss_4_0_0 date=200409200418)14:41:33,515 INFO  [Server] Home Dir: F:\software\jboss-4.0.014:41:33,515 INFO  [Server] Home URL: file:/F:/software/jboss-4.0.0/14:41:33,515 INFO  [Server] Library URL: file:/F:/software/jboss-4.0.0/lib/14:41:33,515 INFO  [Server] Patch URL: null14:41:33,515 INFO  [Server] Server Name: default14:41:33,515 INFO  [Server] Server Home Dir: F:\software\jboss-4.0.0\server\default14:41:33,515 INFO  [Server] Server Home URL: file:/F:/software/jboss-4.0.0/server/default/14:41:33,515 INFO  [Server] Server Data Dir: F:\software\jboss-4.0.0\server\default\data14:41:33,515 INFO  [Server] Server Temp Dir: F:\software\jboss-4.0.0\server\default\tmp14:41:33,515 INFO  [Server] Server Config URL: file:/F:/software/jboss-4.0.0/server/default/conf/14:41:33,515 INFO  [Server] Server Library URL: file:/F:/software/jboss-4.0.0/server/default/lib/14:41:33,515 INFO  [Server] Root Deployment Filename: jboss-service.xml14:41:33,515 INFO  [Server] Starting General Purpose Architecture (GPA)...14:41:33,765 INFO  [ServerInfo] Java version: 1.6.0_41,Sun Microsystems Inc.14:41:33,765 INFO  [ServerInfo] Java VM: Java HotSpot(TM) Client VM 20.14-b01,Sun Microsystems Inc.14:41:33,765 INFO  [ServerInfo] OS-System: Windows XP 5.1,x8614:41:33,984 INFO  [Server] Core system initialized14:41:35,359 INFO  [Log4jService$URLWatchTimerTask] Configuring from URL: resource:log4j.xml14:41:35,406 INFO  [WebService] Using RMI server codebase: http://notice.ppstream.com:8083/14:41:35,562 INFO  [NamingService] Started jnpPort=1099, rmiPort=1098, backlog=50, bindAddress=/0.0.0.0, Client SocketFactory=null, Server SocketFactory=org.jboss.net.sockets.DefaultSocketFactory@ad09307614:41:36,796 INFO  [Embedded] Catalina naming disabled14:41:37,125 INFO  [Http11Protocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-808014:41:37,156 INFO  [Catalina] Initialization processed in 297 ms14:41:37,156 INFO  [StandardService] Starting service jboss.web14:41:37,156 INFO  [StandardEngine] Starting Servlet Engine: Apache Tomcat/5.0.2814:41:37,171 INFO  [StandardHost] XML validation disabled14:41:37,171 INFO  [Catalina] Server startup in 15 ms14:41:37,265 INFO  [TomcatDeployer] deploy, ctxPath=/ebxmlrr, warUrl=file:/F:/software/jboss-4.0.0/server/default/deploy/ebxmlrr-service.sar/ebxmlrr.war/14:41:37,640 INFO  [WebappLoader] Dual registration of jndi stream handler: factory already defined14:41:37,796 INFO  [STDOUT] Initialized REST14:41:37,859 INFO  [SAAJServlet] init14:41:38,093 INFO  [SAAJServlet] init14:41:38,187 INFO  [TomcatDeployer] deploy, ctxPath=/ws4ee, warUrl=file:/F:/software/jboss-4.0.0/server/default/tmp/deploy/tmp4665125682164258987jboss-ws4ee-exp.war/14:41:38,265 INFO  [TomcatDeployer] deploy, ctxPath=/, warUrl=file:/F:/software/jboss-4.0.0/server/default/deploy/jbossweb-tomcat50.sar/ROOT.war/14:41:38,671 INFO  [STDOUT] [ jacorb.home unset! Will use '.' ]14:41:38,671 INFO  [STDOUT] [ File .\jacorb.properties for configuration jacorb not found ]14:41:38,828 INFO  [interceptors] InterceptorManager started with 2 SIs, 2 CIs and 4 IORIs14:41:39,015 INFO  [orb] ORB run14:41:39,093 INFO  [CorbaNamingService] Naming: [IOR:000000000000002B49444C3A6F6D672E6F72672F436F734E616D696E672F4E616D696E67436F6E746578744578743A312E3000000000000200000000000000E8000102000000000E3139322E3136382E312E313030000DC8000000114A426F73732F4E616D696E672F726F6F74000000000000060000000000000008000000004A414300000000010000001C0000000000010001000000010501000100010109000000010501000100000014000000080000001A00000DC9000000210000005000000000000000010000000000000024000000200000007E00000000000000010000000E3139322E3136382E312E313030000DC9000000000000000000000000000000000000000000000000000000000000002000000004000000000000001F000000040000000300000001000000440000000000000003000000010000001C000000000001000100000001050100010001010900000001050100010000002000000004000000000000001F0000000400000003]14:41:39,187 INFO  [naming] re-Bound name: TransactionService14:41:39,187 INFO  [CorbaTransactionService] TransactionFactory: [IOR:000000000000003049444C3A6F72672F6A626F73732F746D2F69696F702F5472616E73616374696F6E466163746F72794578743A312E30000000000200000000000000E8000102000000000E3139322E3136382E312E313030000DC8000000144A426F73732F5472616E73616374696F6E732F46000000060000000000000008000000004A414300000000010000001C0000000000010001000000010501000100010109000000010501000100000014000000080000001A00000DC9000000210000005000000000000000010000000000000024000000200000007E00000000000000010000000E3139322E3136382E312E313030000DC9000000000000000000000000000000000000000000000000000000000000002000000004000000000000001F000000040000000300000001000000440000000000000003000000010000001C000000000001000100000001050100010001010900000001050100010000002000000004000000000000001F0000000400000003]14:41:39,187 INFO  [naming] re-Bound name: UserTransaction14:41:39,578 INFO  [RARDeployment] Required license terms exist view the META-INF/ra.xml: file:/F:/software/jboss-4.0.0/server/default/deploy/jboss-local-jdbc.rar14:41:39,640 INFO  [RARDeployment] Required license terms exist view the META-INF/ra.xml: file:/F:/software/jboss-4.0.0/server/default/deploy/jboss-xa-jdbc.rar14:41:39,687 INFO  [RARDeployment] Required license terms exist view the META-INF/ra.xml: file:/F:/software/jboss-4.0.0/server/default/deploy/jms/jms-ra.rar14:41:40,375 INFO  [WrapperDataSourceService] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:service=DataSourceBinding,name=DefaultDS to JNDI name 'java:DefaultDS'14:41:40,515 INFO  [ConnectionFactoryBindingService] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA to JNDI name 'java:JmsXA'14:41:40,750 INFO  [A] Bound to JNDI name: queue/A14:41:40,750 INFO  [B] Bound to JNDI name: queue/B14:41:40,750 INFO  [C] Bound to JNDI name: queue/C14:41:40,750 INFO  [D] Bound to JNDI name: queue/D14:41:40,765 INFO  [ex] Bound to JNDI name: queue/ex14:41:40,828 INFO  [testTopic] Bound to JNDI name: topic/testTopic14:41:40,828 INFO  [securedTopic] Bound to JNDI name: topic/securedTopic14:41:40,828 INFO  [testDurableTopic] Bound to JNDI name: topic/testDurableTopic14:41:40,828 INFO  [testQueue] Bound to JNDI name: queue/testQueue14:41:40,828 INFO  [DLQ] Bound to JNDI name: queue/DLQ14:41:40,890 INFO  [UILServerILService] JBossMQ UIL service available at : /0.0.0.0:809314:41:41,078 INFO  [MailService] Mail Service bound to java:/Mail14:41:41,250 INFO  [EjbModule] Deploying helloEJB14:41:41,343 INFO  [EJBDeployer] Deployed: file:/F:/software/jboss-4.0.0/server/default/deploy/ejb2.jar14:41:41,375 INFO  [TomcatDeployer] deploy, ctxPath=/jmx-console, warUrl=file:/F:/software/jboss-4.0.0/server/default/deploy/jmx-console.war/14:41:41,500 INFO  [TomcatDeployer] deploy, ctxPath=/web-console, warUrl=file:/F:/software/jboss-4.0.0/server/default/deploy/management/web-console.war/14:41:42,156 INFO  [Http11Protocol] Starting Coyote HTTP/1.1 on http-0.0.0.0-808014:41:42,218 INFO  [ChannelSocket] JK2: ajp13 listening on /0.0.0.0:800914:41:42,218 INFO  [JkMain] Jk running ID=0 time=0/15  config=null14:41:42,234 INFO  [Server] JBoss (MX MicroKernel) [4.0.0 (build: CVSTag=JBoss_4_0_0 date=200409200418)] Started in 8s:610ms14:42:24,187 INFO  [STDOUT] setSessionContext14:42:24,187 INFO  [STDOUT] ejbCreate14:42:24,187 INFO  [STDOUT] sayHello


0 0
原创粉丝点击