web项目调用Ejb3.0组件
采用的开发工具为
JbossIDE+MyEclipse+JBoss4.04
一,首先建立一个ejb3.0项目EJB1+WEB
业务接口:
import javax.ejb.Remote;
@Remote
public interface Caculator {
public int add(int x,int y);
public int substact(int x,int y);
}
一个无状态会话bean:
import javax.ejb.Stateless;
import cn.com.liang.Caculator;
public @Stateless class CaculatorBean implements Caculator {
public int add(int x, int y) {
return x+y;
}
public int substact(int x, int y) {
return x-y;
}
}
打包测试成功calculator.jar
二:新建一个web项目EjbWeb
建一个index.jsp页面
<body>
<form name="f1" action="servlet/CaculatorServlet" method="post">
<table>
<tr>
<td>number1:<input type="text" name="n1"/></td>
</tr>
<tr>
<td>number2:<input type="text" name="n2"/></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="add"/><input type="submit" name="Submit" value="substract"/></td>
</tr>
</table>
</form>
</body>
再建一个servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CaculatorServlet extends HttpServlet {
private static final long serialVersionUID = 488093000861007932L;
private Caculator caculator;
public Caculator getCaculator() {
return caculator;
}
public void setCaculator(Caculator caculator) {
this.caculator = caculator;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String submit=request.getParameter("Submit");
int num1=Integer.parseInt(request.getParameter("n1"));
int num2=Integer.parseInt(request.getParameter("n2"));
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
int result=0;
if(submit.equals("add")){
result=caculator.add(num1, num2);
}else{
result=caculator.substact(num1,num2);
}
out.println(num1+" "+submit+" "+num2+ "= "+result);
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void init() throws ServletException {
try {
InitialContext context=new InitialContext();
Caculator caculator=(Caculator)context.lookup("mytest/CaculatorBean/remote");
setCaculator(caculator);
} catch (NamingException e) {
e.printStackTrace();
}
}
}
web.xml中配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>Calculator</servlet-name>
<servlet-class>cn.com.liang.CaculatorServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Calculator</servlet-name>
<url-pattern>/servlet/CaculatorServlet</url-pattern>
</servlet-mapping>
</web-app>
由于要用到ejb中接口Caculator ,所以需导入calculator.jar包
将web项目打包为ejbWeb.war。
三,新将一个META-INF文件夹,然后在里面建一个application.xml文件
其内容为
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
"-//Sun Microsystems,lnc//DTD j2EE Application 1.3//EN"
"http://java.sun.com/dtd/application_1_3.dtd">
<application>
<display-name>zhouliang's test</display-name>
<module>
<web>
<web-uri>ejbWeb.war</web-uri>
<context-root>/calWeb</context-root>
</web>
</module>
<module>
<ejb>calculator.jar</ejb>
</module>
</application>
四:
将
calculator.jar //ejb3.0组件
ejbWeb.war //打包的web项目
META-INF //对ejb组件和web包访问配置
这三个包或文件拷贝到一个文件夹下,
然后采用jar -cvf mytest.ear *.* 命令将calculator.jar,ejbWeb.war,META-INF三个打包成mytest.ear。
最后mytest.ear即可使用发布了。