当前位置: 首页 > 知识库问答 >
问题:

如何在J2EE客户端环境中连接到WebSphere?

颛孙炜
2023-03-14

我正在尝试连接到WebSphere 7.0上的EJB。EJB需要javax。ejb。SessionContext并从中读取主体,因此我需要在调用它之前登录。

我在独立应用程序中使用以下代码:

import javax.naming.InitialContext;
import javax.security.auth.login.LoginContext;
import com.ibm.websphere.security.auth.WSSubject;
import com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl;

 public static void main(String[] args) throws Exception {
    InitialContext ic = new InitialContext(System.getProperties());
    LoginContext lc = new LoginContext("WSLogin",
        new WSCallbackHandlerImpl("myuser","mypass"));
    lc.login();
    WSSubject.setRunAsSubject(lc.getSubject());
    SessionContext sessionContext=(SessionContext) ic.lookup(
        "java:comp/env/sessionContext");
}

我已经将该条目添加到我的jmxremote中。访问:

myuser读写

但是,我有一个例外:

原因是:javax.naming.ConfigurationException:未设置java: name space的名称空间访问器。可能的原因是用户正在JNDI Context方法调用中指定java: URL名称,但未在html" target="_blank">J2EE客户端或服务器环境中运行。在com.ibm.ws.naming.java.javaURLContextFactory.isNameSpaceAccessable(javaURLContextFactory.java:98)com.ibm.ws.naming.urlbase.UrlContextFactory.getObjectInstance(UrlContextFactory.java:82)javax.naming.spi.NamingManager.getURLObject(NamingManager.java:584)javax.naming.spi.NamingManager.getURLContext(NamingManager.java:533)javax.naming.的初始化Context.getURLOrDefaultInitCtx(初始化Context.java:320)javax.naming.初始化Context.lookup(初始化Context.java:392)

我还应该做什么,在错误消息中提到的“J2EE客户端环境”中运行我的代码?

共有2个答案

高经艺
2023-03-14

您需要使用WAS客户端运行时JAR。WAS\u主页/AppServer/运行时。您将需要ORB和其他特定于服务的JAR。作为使用launchClient的替代方法,您可以在此处手动指定要使用的上下文工厂:

InitialContext ic = new InitialContext(System.getProperties());

设置

java.naming.factory.initial

变量(在您的系统环境或属性对象中)到

com.ibm.websphere.naming.:

马嘉勋
2023-03-14

为了使用java: comp,您需要将客户端应用程序打包在. ears中并使用LaunchClient。最终,这只是使用-CCBootstrapHost/-CCBootstrapPort(或默认值)连接到目标服务器以查找EJB,因此您可以使用EJB thinclient并改用完全限定的EJB绑定名称(请参阅SystemOut.log中的CNTR0167I消息)。

 类似资料:
  • 我对套接字协议非常陌生,我肯定问题来自于我对此几乎一无所知。但是基本上我在服务器端口5000上有一个套接字,我需要一个angularjs代码来监听这个套接字。服务器上的套接字可以读取我从另一台计算机(客户端)发送的任何内容。但是由于某种原因,angular代码不能监听/连接到插座。以下是我现在所拥有的: index.html 下面是angularjs代码: 在Firefox中: Firefox无法

  • 我正在尝试在GKE上部署gRPC,我遵循了本教程-https://cloud.google.com/solutions/exposing-grpc-services-on-gke-using-envoy-proxy 我完成了所有工作,但我似乎无法在golang上运行gRPC,而我可以在grpcurl上运行它。 有人有什么想法吗?

  • 在Netty中创建客户端连接时,我有一个问题。 这里,为什么我们没有一个bind方法,将通道绑定到发起客户端连接的端口(在客户端)?我们唯一需要提供的就是给出服务器地址和端口如下: 这是在客户端还是服务器端创建了一个新的通道?此通道绑定在客户端的哪个端口? 我们在执行服务器端引导时进行绑定,如下所示 我很困惑,不明白客户端从哪个端口向服务器发送数据,使用的是什么通道?

  • (**)我创建了一个 ASP.NET Web 服务器,托管 SignalR 中心。我遵循了本教程。它有效。然后我创建了一个Xamarin.Android客户端(*)。问题是我无法连接到服务器。我想,由于我的主机地址中的“本地主机”,我无法连接。例外是相当大的。 如果我的怀疑是正确的,我该如何解决?如何使本地主机看起来像普通服务器? (*) -我也试过Xamarin。一般形式。 (**) - 请看问

  • 故事是这样的,我有一个远程服务器和一个防火墙后面的客户端。客户端由netty实现,它将建立一个与远程服务器的保活连接。如果200秒内通道中没有消息传输,防火墙将重置连接到远程服务器端的连接,但客户端没有收到任何tcp数据包(例如RST包),因此客户端认为此连接是活的,而事实并非如此。那么如何在防火墙错误处理此保活连接之前强制关闭不寻常的连接呢?顺便说一句:我无法配置防火墙

  • 我已经在CentOS上安装了SQLPLUS瘦客户端。通过客户端,我试图与Oracle 12c建立TCPS连接。但是当我使用以下命令时,我得到“ORA-28759:打开文件失败”异常。然而,当我使用传输控制协议时,它工作正常。 这不起作用:sudo-sqlplus-s“user/pwd002@(描述=(地址=(协议=TCPS)(端口=1522)(主机=test.co.uk))(连接数据=(服务名称=