【使用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 {
public void setName(String name);
public String sayHello();
}
Hello.java
package com.ex;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless(name="hello")
@Remote(HelloRemote.class)
public class Hello implements HelloRemote{
private String name = "";
@Override
public void setName(String name) {
// TODO Auto-generated method stub
this.name = name;
}
@Override
public String sayHello() {
// TODO Auto-generated method stub
return "Hello,"+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,部分代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
HelloRemote 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 stub
final 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 block
System.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 block
e.printStackTrace();
}
return null;
}
在Web.xml加上此Servlet的URL,访问此Servlet,可看到输出如下:
页面和控制台都会输出 Hello World,EJB调用成功。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。