你好,世界!与远程无状态会话Bean [英] Hello World! with Remote Stateless Session Bean

查看:133
本文介绍了你好,世界!与远程无状态会话Bean的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

美好的一天!我是JavaEE 6中的新成员。我尝试使用以下教程创建一个已启动的项目:在GlassFish服务器上创建和运行应用程序客户端。我一步一步地创建了四个项目:JavaSE lib来存储EJB远程接口,一个EJB模块,以及本教程中描述的其他方面。



我的平台:


  • 经销商编号:Ubuntu描述:Ubuntu 10.10版本:10.10
    代号:maverick jdk1.6.0_26

  • Netbean7.2(Build 201207171143)
  • GlassFish Server 3 +



我的远程接口

  package ejb.started; 
//
import javax.ejb.Remote;
//
@Remote
public interface StartedSessionBeanRemote {

String getHelloWorld();

$ b $ / code>

其实施:

  package ejb.started; 
//
import javax.ejb.Stateless;
//
@Stateless(name =StartedSessionBeanRemote)
public class StartedSessionBean implements StartedSessionBeanRemote {
$ b @Override
public String getHelloWorld(){
return(Hello world,EJB!);
}

}

客户端代码:

  package startedentappclient; 
//
导入ejb.started.StartedSessionBeanRemote;
import javax.ejb.EJB;
//
公共类AppClientMain {
@EJB
私有静态StartedSessionBeanRemote startedSessionBean;
public static void main(String [] args){
System.err.println(EJB:+ startedSessionBean.getHelloWorld());


当我尝试运行Remote Client proj时,会收到以下输出:
$ b $ pre $ ant -f / home / ilya / Workspace / git / workspace / StartedEntAppClient -DforceRedeploy = false运行
init:
EJBRemoteInterface.init:
删除:/home/ilya/Workspace/git/workspace/EJBRemoteInterface/build/built-jar.properties
EJBRemoteInterface.deps-jar:
更新属性文件:/home/ilya/Workspace/git/workspace/EJBRemoteInterface/build/built-jar.properties
EJBRemoteInterface.compile:
EJBRemoteInterface.jar:
deps-jar :
编译:
library-inclusion-in-archive:
dist:
预运行部署:
重新部署/ home / ilya / Workspace / git / workspace /StartedEntAppClient/dist/StartedEntAppClient.jar
正在初始化...
运行后部署:
run-deploy:
将1个文件复制到/ home / ilya / Workspace / git / workspace / StartedEntAppClient / dist
将2个文件复制到/ home / ilya / Workspace / git / workspace / StartedEntAppClie nt / dist / StartedEntAppClientClient
警告:/ home / ilya / Workspace / git / workspace / StartedEntAppClient / dist / gfdeploy / StartedEntAppClient不存在。
com.sun.enterprise.container.common.spi.util.InjectionException:试图注入远程的异常ejb-ref name = startedentappclient.AppClientMain / startedSessionBean,Remote 3.x interface = ejb.started.StartedSessionBeanRemote,ejb-链接= null,查找=,mappedName =,jndi-name = ejb.started.StartedSessionBeanRemote,refType =会话到类startedentappclient.AppClientMain:在SerialContext中'java:comp / env / startedentappclient.AppClientMain / startedSessionBean'的查找失败[myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.url.pkgs = com.sun.enterprise.naming,java.naming.factory.state = com.sun .corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703)
at com.sun .enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470)
at com.sun.enterprise.container.commo
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:205)
at(注入管理器类型.java:213)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:205)
at org.glassfish.appclient.client.acc.AppClientContainer $ ClientMainClassSetting.getClientMainClass(AppClientContainer.java:625)
at org.glassfish.appclient.client.acc.AppClientContainer.getMainMethod(AppClientContainer.java:517)
at org.glassfish.appclient.client.acc.AppClientContainer.completePreparation(AppClientContainer.java:411)
at org.glassfish.appclient.client.acc.AppClientContainer.prepare(AppClientContainer.java:319)
at org.glassfish.appclient.client.AppClientFacade.prepareACC(AppClientFacade.java:278)
at org.glassfish.appclient.client.acc.agent.AppClientContainerAgent.premain(AppClientContainerAgent.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:323)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:338)
导致:javax.naming.NamingException:Lookup在SerialContext中'java:comp / env / startedentappclient.AppClientMain / startedSessionBean'失败[myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.url.pkgs = com.sun.enterprise.naming,java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [根异常是javax.naming.NamingException:解析'Remote ejb的Ejb异常-ref name = startedentappclient.AppClientMain / startedSessionBean,Remote 3.x interface = ejb.started.StartedSessionBeanRemote,e jb-link = null,lookup =,mappedName =,jndi-name = ejb.started.StartedSessionBeanRemote,refType = Session'。实际(可能内部)用于查找的远程JNDI名称是'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote'[根异常是javax.naming.NamingException:查找失败'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote 'in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.url.pkgs = com.sun.enterprise.naming,java.naming.factory .state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [根异常是javax.naming.NameNotFoundException:ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.container.common.impl.util.InjectionM anagerImpl._inject(InjectionManagerImpl.java:599)
... 15 more
导致:javax.naming.NamingException:异常解析Ejb for'远程ejb-ref名称= startedentappclient.AppClientMain / startedSessionBean,Remote 3.x interface = ejb.started.StartedSessionBeanRemote,ejb-link = null,lookup =,mappedName =,jndi-name = ejb.started.StartedSessionBeanRemote,refType = Session'。实际(可能内部)用于查找的远程JNDI名称是'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote'[根异常是javax.naming.NamingException:查找失败'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote 'in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.url.pkgs = com.sun.enterprise.naming,java.naming.factory .state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [根异常是javax.naming.NameNotFoundException:ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]]
at com .sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:191)
at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl $ EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1109)
at com .sun.enterprise.naming.impl.GlassfishNamingManagerI在com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:744)
(位于com.sun.enterprise.naming.impl处)时,mpl.lookup(GlassfishNamingManagerImpl.java:776)
。 JavaURLContext.lookup(JavaURLContext.java:169)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498)
... 18 more
导致:javax.naming.NamingException:在SerialContext中'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote'的查找失败[myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory,java .naming.factory.url.pkgs = com.sun.enterprise.naming,java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [根异常是javax.naming.NameNotFoundException :ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com .sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.ejb.EjbNamingReferenceManagerImpl .resolveEjbReference(EjbNamingReferenceManagerImpl.java:186)
... 23 more
导致:javax.naming.NameNotFoundException:ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote未找到
at com .sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248)
at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215)
at com .sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
at com.sun.enterprise.naming.impl.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:109)
at sun .reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:5 7)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun .corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:144)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:174)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:528)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl。 java:199)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1624)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl。 handleRequest(CorbaMessageMediatorImpl.java:1486)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:990)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:742 )
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:539)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl .java:2324)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl $ WorkerThread.performWork(ThreadPoolImpl.java:497)
at com.sun.corba.ee.impl .orbutil.threadpool.ThreadPoolImpl $ WorkerThread.run(ThreadPoolImpl.java:540)
Java结果:1
运行:
BUILD SUCCESSFUL(总时间:11秒)

我不能认为是什么问题。我在第二台个人电脑上建立了相同的项目,并成功完成所有工作那个拥有相同的软件平台。

解决方案

我相信你不能使用主方法中的@EJB注释来访问EJB,因为该方法不受服务器管理。相反,您应该使用JNDI。



如何从独立的java客户端访问远程EJB组件?


Good day! I'm newcomer in the JavaEE 6. I tried to create a started project with use of the following tutorial: Creating and Running an Application Client on the GlassFish Server. I created four projects step by step: JavaSE lib to store an EJB Remote Interface, an EJB Module and otherwise as ther're described in the tutorial.

My platform:

  • Distributor ID: Ubuntu Description: Ubuntu 10.10 Release: 10.10 Codename: maverick
  • jdk1.6.0_26
  • Netbean7.2(Build 201207171143)
  • GlassFish Server 3+

My remote interface

    package ejb.started;
    //    
    import javax.ejb.Remote;
    //
    @Remote
    public interface StartedSessionBeanRemote {

        String getHelloWorld();

    }

Its implementation:

package ejb.started;
//
import javax.ejb.Stateless;
//
@Stateless(name="StartedSessionBeanRemote")
public class StartedSessionBean implements StartedSessionBeanRemote {

    @Override
    public String getHelloWorld() {
       return ("Hello world, EJB!");
    }

}

And the client code:

package startedentappclient;
//
import ejb.started.StartedSessionBeanRemote;
import javax.ejb.EJB;
//
public class AppClientMain {
    @EJB
    private static StartedSessionBeanRemote startedSessionBean;
    public static void main(String[] args) {
        System.err.println("EJB: "+startedSessionBean.getHelloWorld());
    }
}

When I try to run the Remote Client proj, I receive the following output:

ant -f /home/ilya/Workspace/git/workspace/StartedEntAppClient -DforceRedeploy=false run
init:
EJBRemoteInterface.init:
Deleting: /home/ilya/Workspace/git/workspace/EJBRemoteInterface/build/built-jar.properties
EJBRemoteInterface.deps-jar:
Updating property file: /home/ilya/Workspace/git/workspace/EJBRemoteInterface/build/built-jar.properties
EJBRemoteInterface.compile:
EJBRemoteInterface.jar:
deps-jar:
compile:
library-inclusion-in-archive:
dist:
pre-run-deploy:
Redeploying /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist/StartedEntAppClient.jar
Initializing...
post-run-deploy:
run-deploy:
Copying 1 file to /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist
Copying 2 files to /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist/StartedEntAppClientClient
Warning: /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist/gfdeploy/StartedEntAppClient does not exist.
com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=startedentappclient.AppClientMain/startedSessionBean,Remote 3.x interface =ejb.started.StartedSessionBeanRemote,ejb-link=null,lookup=,mappedName=,jndi-name=ejb.started.StartedSessionBeanRemote,refType=Session into class startedentappclient.AppClientMain: Lookup failed for 'java:comp/env/startedentappclient.AppClientMain/startedSessionBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:213)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:205)
    at org.glassfish.appclient.client.acc.AppClientContainer$ClientMainClassSetting.getClientMainClass(AppClientContainer.java:625)
    at org.glassfish.appclient.client.acc.AppClientContainer.getMainMethod(AppClientContainer.java:517)
    at org.glassfish.appclient.client.acc.AppClientContainer.completePreparation(AppClientContainer.java:411)
    at org.glassfish.appclient.client.acc.AppClientContainer.prepare(AppClientContainer.java:319)
    at org.glassfish.appclient.client.AppClientFacade.prepareACC(AppClientFacade.java:278)
    at org.glassfish.appclient.client.acc.agent.AppClientContainerAgent.premain(AppClientContainerAgent.java:82)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:323)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:338)
Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/startedentappclient.AppClientMain/startedSessionBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=startedentappclient.AppClientMain/startedSessionBean,Remote 3.x interface =ejb.started.StartedSessionBeanRemote,ejb-link=null,lookup=,mappedName=,jndi-name=ejb.started.StartedSessionBeanRemote,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' [Root exception is javax.naming.NamingException: Lookup failed for 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]]]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:599)
    ... 15 more
Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=startedentappclient.AppClientMain/startedSessionBean,Remote 3.x interface =ejb.started.StartedSessionBeanRemote,ejb-link=null,lookup=,mappedName=,jndi-name=ejb.started.StartedSessionBeanRemote,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' [Root exception is javax.naming.NamingException: Lookup failed for 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]]
    at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:191)
    at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1109)
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:776)
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:744)
    at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:169)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498)
    ... 18 more
Caused by: javax.naming.NamingException: Lookup failed for 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:186)
    ... 23 more
Caused by: javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found
    at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248)
    at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215)
    at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
    at com.sun.enterprise.naming.impl.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:109)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:144)
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:174)
    at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:528)
    at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:199)
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1624)
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1486)
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:990)
    at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214)
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:742)
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:539)
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2324)
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)
Java Result: 1
run:
BUILD SUCCESSFUL (total time: 11 seconds)

I can't assume what's that problem. I built same projects on my second PC and all work successfully. That one has the same software platform.

解决方案

I believe you cannot access an EJB using the @EJB annotation from a main method because that method is not managed by the server. Instead, you should use JNDI.

How do I access a Remote EJB component from a stand-alone java client?

这篇关于你好,世界!与远程无状态会话Bean的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆