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

远程EJB 3.0查找(STS 3.4.0、Weblogic 10.3.5)

东门俊智
2023-03-14

我有一个Spring MVC 3.1.1应用程序,它需要查找部署到WebLogic10.3.5中远程EJB3.0。

Name [ABC] is not bound in this Context. Unable to find [ABC]

其中ABC不同的每一次尝试。

安装和配置Weblogic后,我可以看到部署在控制台中的EJB,这就是我在他的JNDI树中看到的:

AdminServer+LoginBean#it+company+project+ejb+login+LoginBeanRemote

每个+都是一个树节点,名称为loginBean#it.company.project.ejb.login.loginBeanRemote

如您所见,我想在Spring Security3.1.4中设置EJB for login作用域。

这是远程接口的分支:

@Remote
public interface LoginBeanRemote {
    public User loadUserByUsername(final String username);
}

这是类分支:

@Stateless(mappedName = "LoginBean")
public class LoginBean implements LoginBeanRemote {
   @Override
   public User loadUserByUsername(final String username) {
               final User user = new User();
               (...)
               return user;
   }
}
public class UserLogin {
    public User loadUserByUsername(final String username) {
        final User user = new User();
        Context context = null;
        final Hashtable <String, String> webLogic = new Hashtable <String, String>();
        webLogic.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        webLogic.put(Context.PROVIDER_URL, "[http://localhost:7001]()"); //also used t3 and iiop
        //also used SECURITY_PRINCIPAL & SECURITY_CREDENTIALS
        try {
            context = new InitialContext();
            final LoginBeanRemote login = (LoginBeanRemote) context.lookup("LoginBean#it.postel.aos.ejb.login.LoginBeanRemote");
            (...)
        } catch (final NamingException ne) {
            (...)
        }
        (...)
        return user;
    }
}

我已经将EJB作为外部JAR引用到Spring应用程序中。

我已经将lib文件夹中的这些文件放入我域的Weblogic服务器:
loginejb.jarWeblogic.jarWLFullClient.jar
但在没有这些文件的情况下,我也得到了相同的错误消息(甚至我认为我不需要将Weblogic.jar放入其中)。

我不知道是否需要一个XML配置(ejb-jar.XMLweblogic-ejb-jar.XML),也许当我创建这些文件时我犯了一些错误(现在我没有这些文件),但我也读过我可以在没有XMLS的情况下部署EJB。

我读过一些关于堆栈溢出的其他问题,但没有一个建议为我提供了一个解决方案。

共有1个答案

云浩然
2023-03-14

这至少是错误的:

    final Hashtable <String, String> webLogic = new Hashtable <String, String>();
    webLogic.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    webLogic.put(Context.PROVIDER_URL, "[http://localhost:7001]()"); //also used t3 and iiop
    try {
        context = new InitialContext();

如果您只使用new InitialContext(),而不使用参数,那么您正在进行本地查找,而不是远程查找。您需要用您所拥有的参数初始化上下文,如下所示:

    final Hashtable <String, String> webLogic = new Hashtable <String, String>();
    webLogic.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    webLogic.put(Context.PROVIDER_URL, "http://localhost:7001"); //also used t3 and iiop
    try {
        context = new InitialContext(webLogic); // <--- note this
 类似资料:
  • 我在本地机器上创建了两个liberty实例。我在服务器X中部署了一个包含远程ejb的war模块,并在服务器Y中部署了另一个war模块,它必须从服务器X中远程查找ejb。 下面是从宁静的 Web 服务中查找 ejb 的代码。 当我尝试调用 Web 服务时,我得到以下异常 本地对象不支持 DII 操作 P.S.我已经在两个端口号不同的服务器上启用了ejbRemote功能。 我将查找字符串更改为“cor

  • 我有一个云实例,我已经安装了Jboss5.0.1GA服务器。服务器实例包含一个公共 IP 和一个 nat 地址。我已经使用带有IP(nat)地址的-b运行Jboss服务器,并且网址工作正常。现在我正在创建Java外部客户端来访问部署在Jboss服务器中的EJB3 bean,在那里我得到了例外,并使用谷歌尝试解决方案,这对我的情况没有帮助。找到下面的代码,它告诉我在外部客户端中使用什么来访问EJB3

  • 我对JavaEE非常陌生,尝试运行一个小的EJB示例,但远程JNDI查找总是失败。 到目前为止,我做了什么? 我使用Eclipse for JavaEE,在Marketplace上安装了JBossTools并创建了一个JBoss EAP 7. x运行时服务器(我在安装过程中下载了一个7.1运行时)。 我写了一些Bean,将它们部署在服务器上并启动它。 我用JNDI-Lookup编写了一些客户端代码

  • 问题内容: 如何寻找远程(HTTP)文件上的特定位置,以便只能下载该部分? 可以说远程文件上的字节是:1234567890 我想寻找4并从那里下载3个字节,所以我会:456 而且,如何检查远程文件是否存在?我尝试了os.path.isfile(),但是当我传递远程文件URL时,它返回False。 问题答案: 如果要通过HTTP下载远程文件,则需要设置标题。 在此示例中检查如何完成。看起来像这样:

  • 我正在运行Akka2.0.2微内核,希望为不受信任的远程参与者实现一个身份验证方案。 首先想到的是设置一个身份验证执行元,该执行元在身份验证成功时返回对工作执行元的引用。 也就是说,我要阻止远程参与者在没有身份验证的情况下访问我的微内核参与者系统中的参与者。 在actorOf()中不给工作执行元一个名字是不够的,因为它会得到一个容易猜测的自动生成的名字。有没有一种方法可以禁用Actor的远程查找,

  • 在我们新建了与某个远程仓库的连接之后,它到底改变了什么?现在让我们来看看分支列表: $ git branch -va contact-form 56eddd1 Add new contact form page * master 56eddd1 Add new contact form page remotes/origin/HEAD