这个教程旨在演示如何使用NetBeans和GlassFish应用服务器来创建并测试一个简单的“Hello world”Java EE 5应用程序,它使用了EJB3.0和JSF的依赖注入。
获取NetBeans Java EE 5 Preview版本
可以从这里获得一个每日构建的NetBeans Java EE 5版本:

解压缩并启动IDE。
注册应用服务器
这个预览版本使用最新的GlassFish开放源代码的Java EE 5应用服务器和JBoss服务器来测试。
注意:GlassFish已经支持Web层的Servlet 2.5和JSF 1.2关于Java EE 5的依赖注入申明。如果你希望使用JBoss,你可以测试这个单独的EJB模块,然后使用J2SE客户端或者JNDI查找来调用EJB。
下载服务器,安装,然后在NetBeans的菜单Tools > Server Manager注册它。使用“Sun Java Systems Application Server”作为服务器类型来注册GlassFish:

创建一个Java EE 5应用程序
创建一个新的Enterprise Application工程,设置服务器为GlassFish,J2EE版本为Java EE 5.0:
IDE将创建一个Enterprise Application工程,Web工程和EJB工程。Enterprise Application工程和Web工程包含了Java EE 5部署描述符。EJB模块并没有任何部署描述符——在EJB 3.0中,不需要描述符,所有的元数据都将在写在申明的时候。
Web应用工程必须在其CLASSPATH中包含EJB工程,以便调用EJB。在Web模块中右键点击Libraries,选择添加Project,然后加入EJB模块的项目:

创建一个EJB 3.0 Bean
在EJB模块工程中,右键弹出快捷菜单,选择New > Session Bean,就创建了一个申明式的EJB和一个远程或者本地业务接口。注意,和普通的Java类唯一不同的是,Bean多了一个@Stateless的申明。
添加一个业务方法到接口中:
package hi;
/**
* This is the business interface for HelloWorld enterprise bean.
*/
public interface HelloWorldRemote {
public String sayHi ();
}
然后在Bean类实现它:
package hi;
import javax.ejb.*;
/**
* This is the bean class for the HelloWorldBean enterprise bean.
* Created 3.11.2005 13:14:42
* @author pbuzek
*/
@Stateless()
public class HelloWorldBean implements hi.HelloWorldRemote {
public String sayHi (){
return "Hello world!";
}
}
从Web应用中调用EJB
让我们从JSF中调用EJB,可以看到,依赖注入是如何在JSF Managed Bean中实现的。
首先,打开Web模块工程属性框,在Frameworks中选择支持JSF:
这将创建一个faces-config.xml文件,添加相关的库到工程的CLASSPATH中,注册web.xml并创建一个简单的JSF页面welcomeJSF.jsp。
现在,使用JSF Managed Bean模板在Web模块中创建一个Managed Bean:

接下来,编写调用EJB的代码。在Java EE 5中,你不必写任何JNDI查找的代码,只需使用@EJB申明来标识一个字段,服务器将在创建Managed Bean时,将EJB的实例注入到此字段中:
package beans;
import hi.HelloWorldRemote;
import javax.ejb.EJB;
public class Managed {
@EJB() HelloWorldRemote hello;
public String getGreeting () {
return hello.sayHi();
}
public Managed() {
}
}
最后一步是从JSF中调用Managed Bean:
<body>
<f:view>
<h1><h:outputText value="Java Server Faces" /></h1>
<h:outputText value="#{Managed.greeting}"/>
</f:view>
</body>
运行“Hello World”应用程序。
可以从这里下载源示例代码。

您现在的位置: