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

引发nullpointerexception的EJB远程客户端:无法获取SerialContextProvider

岳彬炳
2023-03-14

我有一个无状态bean

 @Stateless
 public class CalculatorImpl implements Calculator {
 private static final long serialVersionUID = 1L;
 @Override
  public int add(int a, int b) {
return a+b;
  }
    @Override
   public int sub(int a, int b) {
return a-b;
   }
   @Override
   public int mul(int a, int b) {
return a*b;
  }
   @Override
    public float div(int a, int b) {
return a/b;
   }
    }

我已经在带有@remote注释的界面的glassfish上部署了这个功能

  @Remote
  public interface Calculator extends Serializable{
  public int add(int a, int b)throws RemoteException;
  public int sub(int a, int b)throws RemoteException;
   public int mul(int a, int b)throws RemoteException;
   public float div(int a, int b)throws RemoteException;
  }

客户端代码:

      MyClient client= new MyClient();
  Properties props = new Properties();
  props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
  props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");

  // glassfish default port value will be 3700, 
  // but im using tcpviewer to redirect my 50005 port to 3700
  props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

  InitialContext context = new InitialContext(props);

 client.cart = (ShoppingCart) context
        .lookup("java:global/EJBDemo2EAR/EJBDemo2/CalculatorImpl!com.java.stateless.Calculator");
System.out.println("In doget");
client.cart.buy("soap", 12);
client.cart.getCartContents();

错误为:java.lang.NullPointerException(位于com.sun.Enterprise.Naming.Impl.SerialContext.GetOrb(位于com.sun.Enterprise.Naming.Impl.SerialContext.GetProviderCacheKey(位于com.sun.Enterprise.Naming.Impl.SerialContext.354)(位于com.sun.Enterprise.Naming.Impl.SerialContext.GetRemoteProvider(位于com.sun.Enterprise.Naming.Impl.SerialContext.GetProvider(位于ing.factory.url.pkgs=com.sun.enterprise.naming,java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.jndistatefactoryimpl}[根异常是javax.naming.namingexception:无法获取SerialContext的SerialContextProvider[myenv={org.omg.corba.orbinitialport=3700,

共有1个答案

公良渝
2023-03-14

在context.lookup中,只需传递完全限定的接口名称:

client.cart=(ShoppingCart)context.lookup("com.java.stateless.Calculator");
 类似资料:
  • 问题内容: 我目前正在将代码从Jboss7迁移到Wildfly10。 服务器本身完全可以启动。当尝试将我们的客户端与正在运行的新wildfly10服务器进行ejb-remote调用连接时,它将无法正常工作。 我唯一要使用的是以下错误: org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector setupEJBReceiver

  • 我目前正在将我们的代码从Jboss7迁移到Wildfly10。 服务器本身启动完全正常。当尝试将我们的客户端与正在工作的新Wildfly10服务器连接以进行ejb远程调用时,它就是不起作用。 我唯一可以处理的是以下错误: 组织。jboss。ejb。客户远程处理。ConfigBasedEJBClientContextSelector setupEJBReceivers警告:无法注册EJB接收器以连接

  • 我目前正在努力让远程EJB调用在wildfly(8.x和9.x)上工作。 详细来说,它是关于使用EJB客户机API方法从独立的客户机应用程序(而不是从另一个应用程序服务器)进行远程调用。远程命名方法适合我,但不适用于我的场景,因为我需要使用客户端拦截器将上下文数据传递给服务器端拦截器进行远程调用。 但是现在,为了一个简单的示例,我尝试使用客户机API进行远程调用。因此,我尝试了用于远程ejb调用的

  • 我试图使用JBoss7.1.1中的JNDI从远程客户端调用,但我得到了一个异常: 我使用的是jboss的安全机制,并且我已经通过add-user.bat添加了用户,还有带有用户名和密码的jboss-ejb-client.properties文件,但仍然会得到异常。我遵循了链接的示例集:使用JNDI从远程客户端进行EJB调用,当我不使用安全机制时也是如此,但是当我使用安全机制时,就会出现错误 你错过

  • 问题内容: 我不完全了解如何获取远程用户IP地址。 假设我有一个简单的请求路由,例如: 以上方法是正确的以获得真实用户IP地址还是有更好的方法?代理呢? 问题答案: 如果您是在像NGiNX这样的代理服务器上运行或者只有什么,那么您应该检查’x-forwarded-for’: 如果代理不是“您的”,那么我将不信任“ x-forward-for”标头,因为它可能是被欺骗的。

  • 我不完全理解如何获得远程用户IP地址。 假设我有一个简单的请求路由,例如: 上面的方法是正确的,还是有更好的方法来获得真正的用户IP地址?代理呢?