通过JNDI(RMI?)访问jboss中的服务

时间:2014-08-04 08:49:23

标签: java jboss rmi jndi

我需要在jboss中创建一个服务,并在客户端通过JNDI访问它。 我一直在玩JNDI,在客户端做了类似的事情:

import javax.naming.*;

public class App {
    public static void main(String[] args) throws NamingException {
        App app = new App();
        app.setSysProp();
        app.setObject();
        app.getObject();
    }

    public void setSysProp() {
        System.setProperty(Context.PROVIDER_URL, "127.0.0.1:1099");
        System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    }

    public void setObject() throws NamingException {
        Context context = new InitialContext();

        MyObject obj = new MyObject();
        obj.setName("NameOfMyObject");

        context.bind("obj", obj);
    }

    public void getObject() throws NamingException {
        Context context = new InitialContext();

        MyObject obj = (MyObject) context.lookup("obj");

        System.out.println(obj.getName());  
    }
}

这只会绑定并反对客户端的jndi,然后检索它。

现在我想要的是在服务器端绑定一个类似的对象(Jboss 4.2.3)并通过它在服务器上进行一些操作。如何才能做到这一点?我已经读过在这种情况下应该使用一个名为RMI的东西但是究竟是什么以及如何使用它?

1 个答案:

答案 0 :(得分:1)

  

我已经读过在这种情况下应该使用一个名为RMI的东西但是究竟是什么以及如何使用它?

RMI是远程方法调用的Java标准API。它允许您对驻留在其他Java虚拟机中的对象执行方法。请记住,您不需要像JBoss这样的应用程序服务器来与远程Java对象进行通信。这个link提供了一个简单的教程。(注意没有提到JBoss或任何其他应用服务器)

  

我需要在jboss中创建一个服务,并在客户端通过JNDI访问它。

这是另一回事。虽然JBoss(作为Java EE规范兼容服务器)广泛使用RMI,但您不需要了解此API的工作原理。您需要的是创建一个名为EJB的服务器端组件,它允许您在服务器上运行服务。

  

如何做到这一点?

有一百个关于如何实现基本EJB的教程。选择一个与JBoss版本兼容的版本,因为一些实现细节经常会从一个版本更改为另一个版本。 您还会发现EJB规范一直在不断发展。使用JBoss 4.2.3和Java 5,您可以从EJB 3.0开始,这比前一个(2.1)

更容易