Java 尝试运行客户端时出现EJB异常
我创建了一个bean对象,在运行时遇到了这个错误Java 尝试运行客户端时出现EJB异常,java,ejb-3.0,ejb,Java,Ejb 3.0,Ejb,我创建了一个bean对象,在运行时遇到了这个错误 java.lang.ClassCastException at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(Unknown Source) at javax.rmi.PortableRemoteObject.narrow(Unknown Source) at Client_TestPortal.main Client_TestPortal.java:71) Cause
java.lang.ClassCastException at
com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(Unknown Source) at
javax.rmi.PortableRemoteObject.narrow(Unknown Source) at Client_TestPortal.main Client_TestPortal.java:71) Caused by:
java.lang.ClassCastException: javax.naming.Reference ... 3 more
如何在我的客户机中创建bean对象?我有一个bean接口,TestPortal
,一个bean类,TestPortalBean
,在ear中,portaljb
这是我用来在客户端创建EJB实例的代码
String sEjbRemote = "PortalEJB/TestPortalBean/remote";
Properties pProp = new Properties();
pProp.put("java.naming.factory.initial",sInitCtxtCls);
pProp.put("java.naming.provider.url", sUrl);
javax.naming.InitialContext initialContext = new InitialContext(pProp);
Object ref = initialContext.lookup(sEjbRemote);
System.out.println("\n\n \t Source :::"+ref.toString());
test.ejb.TestPortal testportal = (test.ejb.TestPortal)PortableRemoteObject.narrow(ref,test.ejb.TestPortal.class);
Object ref=initialContext.lookup(sEjbRemote)
当我在SOP ref.toString()中打印对象时
我获得了以下信息,但无法为TestPortal创建对象,该对象位于部署在JBOSS-AS版本中的PoratlEJB.ear中:JBOSS-5.0.1.GA
Source :::Reference Class Name: Proxy for: test.ejb.TestPortal
类型:ProxyFactoryKey
内容:ProxyFactory/TestPortalBean/PortalEJB/TestPortalBean/remote
类型:EJB容器名称
内容:jboss.j2ee:ear=portaljb.ear,jar=portaljb.jar,name=TestPortalBean,serv
ice=EJB3
类型:代理工厂是本地的
内容:假
类型:远程业务接口
内容:test.ejb.TestPortal
类型:远程处理主机URL
内容:socket://s9458:3973/通常,我们会这样做
Properties props = getConfigurationProps();
InitialContext ctx = new InitialContext(props);
tp = (TestPortal) ctx.lookup(TEST_PORTAL_JNDI_NAME);
[编辑]
从您的代码中,我可以看到您正试图缩小()对象。让我们看看文件中是怎么说的
我不知道你在干什么。但是你总是可以做到这一点,首先,正如我在第一次尝试中已经展示的那样
TestPortal ref = (TestPortal) initialContext.lookup(sEjbRemote);
而不是
Object ref = initialContext.lookup(sEjbRemote);
通常,我们会这样做
Properties props = getConfigurationProps();
InitialContext ctx = new InitialContext(props);
tp = (TestPortal) ctx.lookup(TEST_PORTAL_JNDI_NAME);
[编辑]
从您的代码中,我可以看到您正试图缩小()对象。让我们看看文件中是怎么说的
我不知道你在干什么。但是你总是可以做到这一点,首先,正如我在第一次尝试中已经展示的那样
TestPortal ref = (TestPortal) initialContext.lookup(sEjbRemote);
而不是
Object ref = initialContext.lookup(sEjbRemote);
如何在客户端中创建对象?在这里显示一些代码。你在使用什么?J2EE1.4?JavaEE5/6?网络界面?远程富客户端?如何在客户端中创建对象?在这里显示一些代码。你在使用什么?J2EE1.4?JavaEE5/6?网络界面?远程富客户端?@saran:将您的代码添加到原始问题中。您以后也可以这样做,只需单击问题左下角给定的编辑链接。@Saran:现在您可以从这里删除您的评论,因为它们不再相关。我也会这么做,包括这个。@Saran:我已经相应地更新了我的答案,在看了你的代码之后。Adeel,当我尝试下面的代码TestPortal ref=(TestPortal)initialContext.lookup(sEjbRemote);我收到以下错误:Client_TestPortal.java:61:无法访问TestPortal错误的类文件:。\TestPortal.java文件不包含类TestPortal请删除或确保它出现在类文件的正确子目录中。TestPortal ref=(TestPortal)initialContext.loo kup(sEjbRemote);^1.error@Saran:您的接口和类都是公共的吗?@saran:将您的代码添加到原始问题中。您以后也可以这样做,只需单击问题左下角给定的编辑链接。@Saran:现在您可以从这里删除您的评论,因为它们不再相关。我也会这么做,包括这个。@Saran:我已经相应地更新了我的答案,在看了你的代码之后。Adeel,当我尝试下面的代码TestPortal ref=(TestPortal)initialContext.lookup(sEjbRemote);我收到以下错误:Client_TestPortal.java:61:无法访问TestPortal错误的类文件:。\TestPortal.java文件不包含类TestPortal请删除或确保它出现在类文件的正确子目录中。TestPortal ref=(TestPortal)initialContext.loo kup(sEjbRemote);^1.error@Saran:您的接口和类都是公共的吗?