【使用JBoss 7进行Java EE 6开发】开发部署调用EJB

开发工具:Eclipse LUMA(需安装了Oracle Java EE 6) JBoss版本:jboss-as-web-7.0.2.Final

下面是开发步骤,在JBoss 7中开发部署EJB还是比较简单的。 读者需已正确安装上述软件平台,并掌握了创建Web 工程及开发Servlet的能力。

1.创建Web工程

选择Project -> New -> Dynamic Web project 创建一个Web项目,创建好项目后,写一个Servlet,等会要用这个Servlet来调用EJB(EJB不可以在main方法中测试)

2.创建EJB工程

选择Project -> New -> EJB Project 输入项目名称:TestEJB 并在EJB版本处选择3.1 点击两次Next,这里很重要,,我们必须生成 ejb-jar.xml 在生成ejb-jar.xml的复选框打上勾

点击Finish完成。

3.创建EJB接口

在TestEJB项目中,创建一个HelloRemote接口以及一个继承了此接口并实现了的类Hello,Hello需标注元注释,代码如下: HelloRemote.java

package com.ex;public interface HelloRemote {(String name);public String sayHello();}

Hello.java

package com.ex;import javax.ejb.Remote;import javax.ejb.Stateless;@Stateless(name=”hello”)@Remote(HelloRemote.class){private String name = “”;(String name) {// TODO Auto-generated method stubthis.name = name;}@Overridepublic String sayHello() {+name;}}

最后的TestEJB组织如下:

在JBoss服务器上运行:右键选择Run As -> Run as server 选择JBoss AS 7.0 ,Next -> Fisish 然后在控制台可看到输出信息:

这些都是JNDI绑定的名字,我们等会用JNDI调用此EJB的时候使用其中一个就好。

4.在Servlet中调用EJB

就上述EJB 导出(export)成EJB jar, 然后将此jar放到第一步创建的Web工程中WebContent/WEB-INF/lib文件夹下, 在Servlet中通过JNDI调用EJB,部分代码如下:

(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubHelloRemote firstEjb = lookupRemoteStatelessEjbBean();firstEjb.setName(“world”);System.out.println(firstEjb);String s = firstEjb.sayHello();System.out.println(s);Writer writer = response.getWriter();writer.write(s);}private static HelloRemote lookupRemoteStatelessEjbBean() {// TODO Auto-generated method stubfinal Hashtable<String, String> jndiProperties = new Hashtable<String, String>();jndiProperties.put(Context.URL_PKG_PREFIXES, “org.jboss.ejb.client.naming”);Context context = null;try {context = new InitialContext(jndiProperties);} catch (NamingException e1) {// TODO Auto-generated catch blockSystem.out.printf(“查找上下文出错”);e1.printStackTrace();}String namespace;namespace = “java:global/Test3/hello!com.ex.HelloRemote”;System.out.println(namespace);try {return (HelloRemote) context.lookup(namespace);} catch (NamingException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}

在Web.xml加上此Servlet的URL,访问此Servlet,可看到输出如下:

页面和控制台都会输出 Hello World,EJB调用成功。

用最少的悔恨面对过去

【使用JBoss 7进行Java EE 6开发】开发部署调用EJB

相关文章:

你感兴趣的文章:

标签云: