ejb的remote home是通过iiop协议访问的不能直接像 HelloHome home = (HelloHome)ctx.lookup("HelloHome");访问,应该改为:
Object homeObj = ctx.lookup("HelloHome");
HelloHome home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(homeObj, HelloHome.class);
Object homeObj = ctx.lookup("HelloHome");
HelloHome home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(homeObj, HelloHome.class);
解决方案 »
- 框架相关知识
- 关于application做访问量的问题
- 求助:spring jdbc操作orcale clob数据类型
- ApplicationResources.properties
- 请教一个JSF中在dataTable中<h:commandLink/>失效的问题
- 用ant编译开源项目compass-1.1RC1-SNAPSHOT的问题
- Spring Aop Step-By-Step 学习笔记
- 各位大哥,怎样将JavaWebStudio做出的struts和JBuilder相结合
- JBoss 配置BMP EJB 出现的奇怪问题
- struts html:errors标签的问题(在线等待)
- 我是新手,请问,j2ee是什么,它用来做什么?
- 棘手的问题,快来看
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.println("<html><head><title>the first EJB</title></head>");
try { Hashtable env=new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "192.168.0.234:1099");Context ctx = new InitialContext(env);HelloHome home=(HelloHome)PortableRemoteObject.narrow(ctx.lookup("Hello"),HelloHome.class);
Hello yj = home.create();
out.println( yj.getHello() );
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.ClassCastException
at $Proxy70.create(Unknown Source)
at yj.HelloServlet.service(HelloServlet.java:25)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:536)
改成这样试试
import javax.naming.*;
import java.rmi.*;
import java.util.*;public class HelloClient { public static void main(String[] args) throws Exception {
Hello hello = null;
//Hello 为你的远程接口
try {
Context ctx = new InitialContext(System.getProperties());
HelloHome home = (HelloHome)javax.rmi.PortableRemoteObject.narrow(ctx.lookup("HelloHome"),HelloHomeHome.class);
//HelloHome为你的远程home接口 “HelloHome”为你的远程Home jndi name
hello = home.create();
System.out.println(hello.getHello());
}catch (Exception e) {
System.out.println(e.toString());
} }}