在我的 Websphere 服务器中安装的 EJB 无状态 bean 中获取主机和端口

Get Host and port inside an EJB Stateless bean installed in my Websphere server

我有一个 EJB 无状态 Bean,它由 Websphere 内的调度程序自动执行。我的 EJB 安装在 Websphere 中。在我的 EJB 中,我想向其他应用程序公开的 Web 服务发出 http 请求(在同一个服务器中)。我尝试只使用相对路径,因为这是我通常在应用程序之间发出请求的方式,但在我的 bean 中,我不知道如何获取主机名和端口来构建 URL.

我通过这样做设法获得了主机(ip):

InetAddress.getLocalHost().toString();

但我还需要端口号。问题是:如何获取安装我的 EJB 应用程序的应用程序服务器 (Websphere) 的主机和端口号?这可能吗?

此代码是我尝试发出请求的方式,但这不起作用,因为我需要完整路径:

URL url = new URL("/MyOtherAppName/myservice");         
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

connection.setRequestProperty("Content-Length", 
    Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");  

connection.setUseCaches(false);
connection.setDoOutput(true);

-编辑 1 ----

我认为用户 Gas 的方法很好,使我的应用程序更易于配置。

我按照本指南实施了 URL 提供商方法:

URL Provider Websphere

我建议采用不同的方法,而不是让服务器主机和端口使用 URL 资源,然后在 EJB 中获取它。它将更易于跨服务器移植,并且在您将服务转移到其他地方时也更加灵活。

Using URL resources within an application

通过应用服务器中的控制台定义 URL,并在您的 EJB 中使用 @Resource 注释,如下所示:

@Resource(name="serviceURL", lookup="url/myurl")
URL myURL;