【发布时间】:2010-11-24 12:59:23
【问题描述】:
【问题讨论】:
标签: java service jndi provider
【问题讨论】:
标签: java service jndi provider
我按照在线 JNDI 教程来帮助我解决我需要的问题。它看起来有点旧(并且是为 JDK 1.4.2 编写的)但仍然适用。 Sun/Oracle JNDI Tutorial.
【讨论】:
现在我解决了 InitialContext 类的注释和全局使用问题。 无状态注解和 ejb-jar xml 文件以及访问全局 jndi 地址的密钥以供使用。
访问代码:
this.jndiAddress="ejb/service/IMyInterface";
Context context = new InitialContext();
IMyInterface object = (IMyInterface) context.lookup(this.jndiAddress);
object.doSomething();
服务代码;
IMyInterface.java:
public interface IMyInterface {
void doSomething();
}
MyClass.java:
@Remote(IMyInterface.class)
@Stateless(mappedName="ejb/service/IMyInterface")
public class MyClass implements IMyInterface {
@EJB
private IMyUserDao userDao;
@Override
public void doSomething() {
User user = userDao.get(1);
System.out.println(user.getName());
}
}
ejb-jar.xml;
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0">
<display-name>Service</display-name>
<enterprise-beans>
<session>
<ejb-name>MyClass</ejb-name>
<ejb-class>package.MyClass</ejb-class>
</session>
<session>
<ejb-name>UserDao</ejb-name>
<ejb-class>package.dao.UserDao</ejb-class>
</session>
</enterprise-beans>
</ejb-jar>
【讨论】:
FWIW,如果有人想在 Tomcat 中拥有自定义 JNDI 资源,请查看他们的 JNDI tutorial。
【讨论】: