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

ang*_*res 1 java websphere ejb stateless inetaddress

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

我设法通过这样做得到主机(IP):

InetAddress.getLocalHost().toString();
Run Code Online (Sandbox Code Playgroud)

但我也需要端口号.问题是:如何获取安装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);
Run Code Online (Sandbox Code Playgroud)

- 编辑1 ----

我认为用户Gas的方法很好,并且使我的应用程序更容易配置.

我按照本指南实现了URL Provider方法:

URL提供程序Websphere

Gas*_*Gas 5

我建议使用不同的方法,而不是让服务器主机和端口使用URL资源,然后在EJB中获取它.它将在服务器之间更加便携,并且在您将服务移动到其他位置时也更灵活.

请参阅在应用程序中使用URL资源

通过app server中的控制台定义URL,并@Resource在EJB中使用注释,如下所示:

@Resource(name="serviceURL", lookup="url/myurl")
URL myURL;
Run Code Online (Sandbox Code Playgroud)