Servlets 从Servlet查找JBoss中的JNP端口

Servlets 从Servlet查找JBoss中的JNP端口,servlets,jboss,jndi,Servlets,Jboss,Jndi,我有一个运行在JBoss(4.2.2.GA和4.3-eap)中的servlet,它需要连接到EJB才能工作 一般来说,这段代码可以很好地获取连接上下文并进行RMI调用(所有调用都在同一台服务器中) 有什么想法吗?关于端口的信息作为MBean属性存储在JBoss上。问题是为了读取此属性,您需要访问MBean,这需要端口号 我认为获取此端口号的唯一方法是读取配置文件本身并提取端口号。它不是很优雅,所以您可能更喜欢在web.xml文件中为servlet创建端口号并将其存储在那里 您也可以使用JBoss

我有一个运行在JBoss(4.2.2.GA和4.3-eap)中的servlet,它需要连接到EJB才能工作

一般来说,这段代码可以很好地获取连接上下文并进行RMI调用(所有调用都在同一台服务器中)


有什么想法吗?

关于端口的信息作为MBean属性存储在JBoss上。问题是为了读取此属性,您需要访问MBean,这需要端口号

我认为获取此端口号的唯一方法是读取配置文件本身并提取端口号。它不是很优雅,所以您可能更喜欢在web.xml文件中为servlet创建端口号并将其存储在那里


您也可以使用JBoss HTTP invoker,它通过端口8080(默认HTTP端口)将请求隧道到1099端口,但是请注意,您需要保护此连接器。在这种情况下,端口将始终与HTTP端口相同。

关于端口的信息作为MBean属性存储在JBoss上。问题是为了读取此属性,您需要访问MBean,这需要端口号

我认为获取此端口号的唯一方法是读取配置文件本身并提取端口号。它不是很优雅,所以您可能更喜欢在web.xml文件中为servlet创建端口号并将其存储在那里


您也可以使用JBoss HTTP invoker,它通过端口8080(默认HTTP端口)将请求隧道到1099端口,但是请注意,您需要保护此连接器。在这种情况下,端口将始终与HTTP端口相同。

Piotr,感谢您的响应。我没有想到直接转到配置文件。你知道我在问题的底部用HTTP调用程序做了什么错事吗?是否有一个文件将其连接到JAAS,或者这是我需要在代码中执行的操作?再次感谢。皮奥特,谢谢你的回复。我没有想到直接转到配置文件。你知道我在问题的底部用HTTP调用程序做了什么错事吗?是否有一个文件将其连接到JAAS,或者这是我需要在代码中执行的操作?再次感谢。
public class ContextFactory
{
  public static final int DEFAULT_JNDI_PORT = 1099;
  public static final String DEFAULT_CONTEXT_FACTORY_CLASS = "org.jnp.interfaces.NamingContextFactory";
  public static final String DEFAULT_URL_PREFIXES = "org.jboss.naming:org.jnp.interfaces";

  public Context createContext(String serverAddress)
  {
      //combine provider name and port 
      String providerUrl = serverAddress + ":" + DEFAULT_JNDI_PORT;

      //Set properties needed for Context: factory, provider, and package prefixes.
      Hashtable<String, String> env = new Hashtable<String, String>(3);
      env.put(Context.INITIAL_CONTEXT_FACTORY, DEFAULT_CONTEXT_FACTORY_CLASS);
      env.put(Context.PROVIDER_URL, providerUrl);
      env.put(Context.URL_PKG_PREFIXES, DEFAULT_URL_PREFIXES);


      return new InitialContext(env);
  }
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.HttpNamingContextFactory");
env.put(Context.PROVIDER_URL, "http://" + serverAddress + ":8080/invoker/JNDIFactory");