我需要在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的东西但是究竟是什么以及如何使用它?
答案 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)
更容易