webshpere下EJB2.0的helloworld

我以前用过EJB3.0开发过两个项目,除了它依赖于服务器容器的重量级外,我并没有看到它所谓的侵入性,所以当看到资料说EJB是侵入性的时候,会感到难以理解,因为使用EJB3的时候甚至感觉它比Spring还要好用。
但想不到2011年的今天,我竟然还能使用ejb2.0开发项目,虽则痛苦,其实也算是一种幸运吧。
至少让我体会到了遭到口诛笔伐的EJB2的侵入性,同时越是使用老的技术,才有更接近于原理之感,现贴上一个小例子,是自己写的ejb2的helloworld,只因网上并无实质资料,所以虽则简单,犹以能助后来者。

1,在ejb工程下,新建一個sessionbean:HelloBean,
package com.zjx;

/**
 * Bean implementation class for Enterprise Bean: Hello
 */
public class HelloBean implements javax.ejb.SessionBean {

	static final long serialVersionUID = 3206093459760846163L;

	private javax.ejb.SessionContext mySessionCtx;

	/**
	 * getSessionContext
	 */
	public javax.ejb.SessionContext getSessionContext() {
		return mySessionCtx;
	}

	/**
	 * setSessionContext
	 */
	public void setSessionContext(javax.ejb.SessionContext ctx) {
		mySessionCtx = ctx;
	}

	/**
	 * ejbCreate
	 */
	public void ejbCreate() throws javax.ejb.CreateException {
	}

	/**
	 * ejbActivate
	 */
	public void ejbActivate() {
	}

	/**
	 * ejbPassivate
	 */
	public void ejbPassivate() {
	}

	/**
	 * ejbRemove
	 */
	public void ejbRemove() {
	}

	public void sayHello() {
		System.out.println("Hello World!");
	}
}

2,会在client中生成一个Hello接口,在其中添加一个sayHello() 方法。
3,发布EAR文件,会自动生成多个java文件,且不必管。
4,配置文件信息:
<display-name>
	testEJB</display-name>
	<enterprise-beans>
		<session id="Hello">
			<ejb-name>Hello</ejb-name>
			<home>com.zjx.HelloHome</home>
			<remote>com.zjx.Hello</remote>
			<ejb-class>com.zjx.HelloBean</ejb-class>
			<session-type>Stateless</session-type>
			<transaction-type>Container</transaction-type>
		</session>
	</enterprise-beans>
	<ejb-client-jar>testEJBClient.jar</ejb-client-jar>


5,新建测试工程,类如下:
public static void main(String[] args) throws NamingException,
			RemoteException {
		String JNDIName = "ejb/com/zjx/HelloHome";
		InitialContext initContext = new InitialContext();
		Object obj = initContext.lookup(JNDIName);

		HelloHome home = (HelloHome) javax.rmi.PortableRemoteObject.narrow(obj,
				HelloHome.class);
		try {
			Hello hello = home.create();
			hello.sayHello();
		} catch (CreateException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
	}

测试成功,不过需要注意的是main方法只能测试remote,如果要测local宜用web。

你可能感兴趣的:(spring,Web,bean,ejb)