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

发布于 2024-10-03 19:39:16 字数 1540 浏览 6 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

〃温暖了心ぐ 2024-10-10 19:39:16

我按照在线 JNDI 教程来帮助我满足我的需要。它看起来有点旧(为 JDK 1.4.2 编写),但仍然适用。 Sun/Oracle JNDI 教程。

I followed the JNDI Tutorial online to help me with what I needed. It is a bit old looking (and written for JDK 1.4.2) but still applicable. Sun/Oracle JNDI Tutorial.

梦开始←不甜 2024-10-10 19:39:16

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

Now I solved my problem with annotations and global usage of InitialContext class.
Stateless annotation and ejb-jar xml files and accessing the global jndi addresses the keys for usage.

Access Code:

this.jndiAddress="ejb/service/IMyInterface";
Context context = new InitialContext();
IMyInterface object = (IMyInterface) context.lookup(this.jndiAddress);
object.doSomething();

Service Code;

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>
活雷疯 2024-10-10 19:39:16

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

FWIW, if anyone wants to have a custom JNDI resource in Tomcat check out their JNDI tutorial.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文