Jakarta ee java.lang.ClassCastException:org.omg.stub.java.rmi.\u Remote\u stub不能转换为<;远程业务接口名称>;

Jakarta ee java.lang.ClassCastException:org.omg.stub.java.rmi.\u Remote\u stub不能转换为<;远程业务接口名称>;,jakarta-ee,websphere,ejb-3.0,Jakarta Ee,Websphere,Ejb 3.0,我使用的是WAS服务器,我编写了一个java客户端,通过业务接口调用一个EJB,如下所示: Hashtable<String, String> envJNDIProperties = new Hashtable<String, String>(); envJNDIProperties.put("javax.naming.factory.initial", "com.ibm.websphere.naming.WsnInitia

我使用的是WAS服务器,我编写了一个java客户端,通过业务接口调用一个EJB,如下所示:

Hashtable<String, String> envJNDIProperties = new Hashtable<String, String>();
                        envJNDIProperties.put("javax.naming.factory.initial", "com.ibm.websphere.naming.WsnInitialContextFactory");
                        envJNDIProperties.put("java.naming.provider.url", "iiop://indmtx981:24121");
                        envJNDIProperties.put("java.naming.security.principal", myTicket);
                        envJNDIProperties.put("java.naming.security.credentials", "NA");
                        envJNDIProperties.put("org.omg.CORBA.ORBClass", "com.ibm.CORBA.iiop.ORB");

                        InitialContext initialCtx = new InitialContext(envJNDIProperties);

                        Object ejbObject = null;

/*
* Giving me error in following line
*/                         
SearchServicesRemoteBusiness remoteBusiness = (SearchServicesRemoteBusiness) initialCtx.lookup("amdocs-RM-Billing/CM-L1/SearchServicesBean!amdocs.csm3g.sessions.views.business.remote.SearchServicesRemoteBusiness");

                        System.out.println("Got referencve for: "+ ejbObject.getClass().getName());
//                      SearchServicesRemoteBusiness remoteBusiness = (SearchServicesRemoteBusiness) PortableRemoteObject.narrow(ejbObject,amdocs.csm3g.sessions.views.business.remote.SearchServicesRemoteBusiness.class);

                        AccountIdInfo accountId = new AccountIdInfo();

                        remoteBusiness.searchAccountById(accountId);
Hashtable envJNDIProperties=new Hashtable();
envJNDIProperties.put(“javax.naming.factory.initial”、“com.ibm.websphere.naming.WsnInitialContextFactory”);
envJNDIProperties.put(“java.naming.provider.url”)iiop://indmtx981:24121");
envJNDIProperties.put(“java.naming.security.principal”,myTicket);
envJNDIProperties.put(“java.naming.security.credentials”,“NA”);
envJNDIProperties.put(“org.omg.CORBA.ORBClass”、“com.ibm.CORBA.iiop.ORB”);
InitialContext initialCtx=新的InitialContext(EnvjndProperties);
对象ejbObject=null;
/*
*给我以下行中的错误
*/                         
SearchServicesRemoteBusiness=(SearchServicesRemoteBusiness)initialCtx.lookup(“amdocs RM Billing/CM-L1/SearchServicesBean!amdocs.csm3g.sessions.views.business.remote.SearchServicesRemoteBusiness”);
System.out.println(“获取的引用:”+ejbObject.getClass().getName());
//SearchServicesRemoteBusiness=(SearchServicesRemoteBusiness)PortableRemoteObject.slow(ejbObject,amdocs.csm3g.sessions.views.business.remote.SearchServicesRemoteBusiness.class);
AccountIdInfo accountId=新AccountIdInfo();
remoteBusiness.searchAccountById(accountId);
错误: java.lang.ClassCastException:org.omg.stub.java.rmi.\u Remote\u stub不能强制转换为.SearchServicesRemoteBusiness 位于EJBStandaloneClient.main(EJBStandaloneClient.java:27)

我尝试过:我使用createjbsubs.sh为这个远程业务接口创建存根,并在运行时将这个存根放在客户机类路径中,但错误仍然存在。 欢迎提出任何建议。

请致电:


问题是在我的类路径中,我给出了存根的完整类位置,而不应该在类路径中包含包结构。例如,我在目录x/y/z//stub.class中创建了存根。所以我们应该在类路径中使用x/y/z,而不是x/y/z//stub.class


我纠正了这个问题,它工作正常:)

很抱歉回复太晚,我当时处于脱机状态。若我这样做,那个么它在以下行失败了:remoteBusiness.searchAccountById(accountId);对于java.lang.NullPointerException,即在本例中,remoteBusiness将为null。这听起来像是产品问题,因为PortableRemoteObject.窄带不应返回null。我建议与IBM建立PMR。
SearchServicesRemoteBusiness remoteBusiness = (SearchServicesRemoteBusiness)
    PortableRemoteObject.narrow(initialCtx.lookup("amdocs-RM-Billing/CM-L1/SearchServicesBean!amdocs.csm3g.sessions.views.business.remote.SearchServicesRemoteBusiness"),
    SearchServicesRemoteBusiness.class);