package com.synnex.ejb.util;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class EjbUtil {
private static Context initialContext;
private static final String PKG_INTERFACES = "org.jboss.ejb.client.naming";
private static Context getInitialContext() throws NamingException{
if(initialContext == null){
Properties prop = new Properties();
prop.put(Context.URL_PKG_PREFIXES, PKG_INTERFACES);
initialContext = new InitialContext(prop);
}
return initialContext;
}
public static Object lookup(String jndi) throws Exception{
return getInitialContext().lookup(jndi);
}
private static Object lookup(Class<?> serviceClass, String moduleName, String beanName) throws Exception {
final String appName = ""; //ear包的名字,如果没有ear包,那么这个就是空字符串就行
final String distinctName = "";
final String interfaceName = serviceClass.getName();
String jndi = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + interfaceName;
System.out.println("JNDI: " + jndi);
return getInitialContext().lookup(jndi);
}
public static Object lookupRemoteBizService(Class<?> serviceClass, String moduleName) throws Exception{
String beanName = serviceClass.getSimpleName().replace("Remote", "");
return lookup(serviceClass, moduleName, beanName);
}
}
调用DEMO
package com.synnex.servlet;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hua.ejb.LoginBeanRemote;
import com.synnex.ejb.util.EjbUtil;
/**
* Servlet implementation class TestRemoteEJB
*/
@WebServlet("/TestRemoteEJB")
public class TestRemoteEJB extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TestRemoteEJB() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setHeader("Content-type", "text/html;charset=UTF-8");
//这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
response.setCharacterEncoding("UTF-8");
try {
LoginBeanRemote loginBean = (LoginBeanRemote)EjbUtil.lookupRemoteBizService(LoginBeanRemote.class, "MyEJBServer");
String str = loginBean.login("ejb", "123456");
String str1 = loginBean.login("ejb", "qwerty");
request.setCharacterEncoding("utf-8");
System.out.println(str);
System.out.println(str1);
OutputStream ps = response.getOutputStream();
//这句话的意思,使得放入流的数据是utf8格式
ps.write(str.getBytes("UTF-8"));
ps.write("<br>".getBytes("UTF-8"));
ps.write(str1.getBytes("UTF-8"));
// response.getWriter().write(str);
// response.getWriter().write("<br>");
// response.getWriter().write(str1);
response.getWriter().flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上代码来自网络