Java 使用@EJB注入或在Servlet筛选器中每次执行查找
我想将EJB(本地)注入Servlet过滤器,EAR部署在WebLogic11g上 我的问题是: @EJB注释应该在Weblogic 11g上工作还是被忽略? 或 我必须按如下方式查找并提及web.xml和weblogic xml文件中的引用:Java 使用@EJB注入或在Servlet筛选器中每次执行查找,java,jakarta-ee,orm,ejb-3.0,Java,Jakarta Ee,Orm,Ejb 3.0,我想将EJB(本地)注入Servlet过滤器,EAR部署在WebLogic11g上 我的问题是: @EJB注释应该在Weblogic 11g上工作还是被忽略? 或 我必须按如下方式查找并提及web.xml和weblogic xml文件中的引用: Hashtable env = new Hashtable(); env.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" ); Context c
Hashtable env = new Hashtable();
env.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" );
Context ctx = new InitialContext( env );
ctx.lookup( "myejb" );
谢谢我只想支持以下内容 更多重新参考: 远程和本地接口
@Remote
public interface IPersonEAORemote {
public void show();
}
@Local
public interface IPersonEAOLocal {
public void show();
}
EJB Bean
@Stateless(name = "PersonEAO", mappedName = "PersonEAO")
public class PersonEAOBean implements IPersonEAORemote, IPersonEAOLocal {
/* if you use JPA
@PersistenceContext(name = "EJB_DEMO")
private EntityManager em;
*/
public void show() {
System.out.println("Good Luck!");
}
}
简单客户端
public class Client {
private IPersonEAORemote personEAO;
private void init() {
try {
final Context context = getInitialContext();
personEAO = (IPersonEAORemote)context.lookup("PersonEAO#<your package name>.IPersonEAORemote");
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static Context getInitialContext() throws NamingException {
Hashtable env = new Hashtable();
// WebLogic Server 10.x connection details
env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL, "t3://127.0.0.1:7101");
return new InitialContext(env);
}
public void show() {
personEAO.show());
}
public static void main(String[] args) {
Client client = new Client();
client.init();
client.show();
}
}
对于JBoss5:
Context.INITIAL_CONTEXT_FACTORY ---> org.jnp.interfaces.NamingContextFactory
Context.PROVIDER_URL ---->http://localhost:1099
我问这个问题是因为当我使用@EJB时,它会抛出NPE,如果我真的查找它,那么它就可以正常工作。对不起,我在这里提供的信息很少。使用者使用要注入Servlet过滤器中的EJB本地接口,EAR部署在WebLogic11g上。在Servlet过滤器中注入的@EJB注释应该在Weblogic 11g上工作,还是像我在文章中提到的那样进行查找?
Context.INITIAL_CONTEXT_FACTORY ---> org.jnp.interfaces.NamingContextFactory
Context.PROVIDER_URL ---->http://localhost:1099