Java Glassfish JNDI初始上下文

Java Glassfish JNDI初始上下文,java,jakarta-ee,glassfish,jndi,Java,Jakarta Ee,Glassfish,Jndi,我正在进行一个项目,试图连接到Glassfish EJB,但我遇到了一个问题 执行以下操作时: Properties props = new Properties(); this.url = "10.128.128.135"; props.setProperty("org.omg.CORBA.ORBInitialHost", this.url); props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

我正在进行一个项目,试图连接到Glassfish EJB,但我遇到了一个问题

执行以下操作时:

    Properties props = new Properties();
    this.url = "10.128.128.135";
    props.setProperty("org.omg.CORBA.ORBInitialHost", this.url);
    props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
    final Context context = new InitialContext(props);
    this.userEJB = (UserEJB) context.lookup("ejb/User#com.xxxx.xxxxx.ejb.UserEJB");
    LoggerFactory.getLogger(this.getClass()).info("EJB client initialized with url: " + url);
我得到一个例外:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at com.xxxxx.xxxx.gwt.server.delegate.UserDelegate.<init>(UserDelegate.java:47)
at com.xxxxx.xxxx.gwt.server.rpc.LoginServiceImpl.<clinit>(LoginServiceImpl.java:36)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at java.lang.Class.newInstance(Class.java:433)
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
at com.xxxxx.xxxx.gwt.MyHeadersFilter.doFilter(MyHeadersFilter.java:28)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
然后我得到了另一个例外:

java.lang.NullPointerException
at com.sun.enterprise.naming.impl.SerialContext.getORB(SerialContext.java:347)
at com.sun.enterprise.naming.impl.SerialContext.getProviderCacheKey(SerialContext.java:354)
at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:384)
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:329)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:477)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at com.xxxxx.xxxx.gwt.server.delegate.UserDelegate.<init>(UserDelegate.java:46)
at com.xxxxx.xxxx.gwt.server.rpc.LoginServiceImpl.<clinit>(LoginServiceImpl.java:36)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at java.lang.Class.newInstance(Class.java:433)
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
at com.xxxxx.xxxx.gwt.MyHeadersFilter.doFilter(MyHeadersFilter.java:28)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
java.lang.NullPointerException
位于com.sun.enterprise.naming.impl.SerialContext.getORB(SerialContext.java:347)
位于com.sun.enterprise.naming.impl.SerialContext.getProviderCacheKey(SerialContext.java:354)
位于com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:384)
位于com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:329)
在com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:477)上
位于com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
在javax.naming.InitialContext.lookup(InitialContext.java:417)
在com.xxxxx.xxxx.gwt.server.delegate.UserDelegate上。(UserDelegate.java:46)
位于com.xxxxx.xxxx.gwt.server.rpc.LoginServiceImpl.(LoginServiceImpl.java:36)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:408)
位于java.lang.Class.newInstance(Class.java:433)
位于org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
位于org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463)
位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
位于com.xxxxx.xxxx.gwt.MyHeadersFilter.doFilter(MyHeadersFilter.java:28)
位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
位于org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
位于org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
位于org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
位于org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
位于org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
位于org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
位于org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
位于org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
位于org.mortbay.jetty.Server.handle(Server.java:324)
位于org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
位于org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
位于org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
位于org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
位于org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
位于org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
位于org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

那么如何查找我的EJB呢?

您应该确保已经在glassfish管理控制台中注册了EJB资源 本地主机\4848

您可以通过选择服务选项卡——服务器——右键单击glassfish——选择启动管理控制台来访问netbeans上的管理控制台

检查EJB是否已在服务器中注册

还可以查看资源注入,了解有关如何从java应用程序访问资源的更多信息

我希望这是有帮助的


请下次发布您的代码。

这是GWT类路径的问题。部署应用程序工作得很好,现在我已经修复了GWT项目,方法是从GWT类路径中删除JAR,并让应用程序自己找到它们。例如:

[WARN] Server class 'com.google.gwt.user.client.rpc.RemoteService' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/Users/linde/.m2/repository/com/google/gwt/gwt-servlet/2.5.1/gwt-servlet-2.5.1.jar' to the web app classpath for this session

现在,开发模式和部署都可以工作了。虽然远程调试(例如设置GWT dev模式运行并从远程计算机连接)不起作用,并给我一个奇怪的错误。这可能是GWT2.5.1中的一个bug。

您好,您在使用netbeans吗?看起来像是类路径问题。请编辑带有完整错误stacktrace的问题,以及您与客户打包的LIB。我们将在周一上午做第一件事。谢谢谢谢你的回答。我会查一查你说的话,确认一切都是应该的。不幸的是,我不能发布太大的代码块,因为它不是开源的,但我将在以后的文章中更清楚地说明这一点。再次感谢,如果有帮助,我会回来接受答案!你在使用netbeans吗?不,我在这个项目中使用eclipse。我现在在glassfish中查找了一些东西,我在ORB部分下有一个IIOP侦听器,还有一个EJB容器,它看起来应该是这样的。除了数据库连接器之外,大多数内容都是默认的
[WARN] Server class 'com.google.gwt.user.client.rpc.RemoteService' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/Users/linde/.m2/repository/com/google/gwt/gwt-servlet/2.5.1/gwt-servlet-2.5.1.jar' to the web app classpath for this session