有关编写JNDI服务提供程序的教程

时间:2010-11-24 12:59:23

标签: java service jndi provider

是否有任何有关编写JNDI服务提供程序以及从另一个项目逐步访问对象和方法的教程。有关Building a service provider的一些信息,但实施起来并不容易。

感谢。

3 个答案:

答案 0 :(得分:3)

我在线跟踪JNDI教程,帮助我完成所需。它看起来有点旧(并为JDK 1.4.2编写)但仍然适用。 Sun/Oracle JNDI Tutorial.

答案 1 :(得分:1)

现在我通过注释和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>

答案 2 :(得分:0)

FWIW,如果有人想在Tomcat中拥有自定义JNDI资源,请查看他们的JNDI tutorial