当前位置: 技术问答>java相关
调用ejb的时候一定要把ejb的jar包放到classpath里面吗?
来源: 互联网 发布时间:2015-10-11
本文导语: 我在weblogic下面写了一个很简单的ejb 拷贝到那个..configmydomainapplications里面去 然后我编写了一个jsp去掉用这个ejb 问题是,在jsp里面必须import这个ejb的jar 这样这个jar必须放在weblogic的classpath下面 这样岂不是很麻烦,每...
我在weblogic下面写了一个很简单的ejb
拷贝到那个..configmydomainapplications里面去
然后我编写了一个jsp去掉用这个ejb
问题是,在jsp里面必须import这个ejb的jar
这样这个jar必须放在weblogic的classpath下面
这样岂不是很麻烦,每写一个ejb都要在classpath里面加一个
另外,对于分布应用的时候,一个机器上的jsp调用另外一个机器上的ejb怎么
实现,难道还要拷贝过来吗?
请大虾指教
拷贝到那个..configmydomainapplications里面去
然后我编写了一个jsp去掉用这个ejb
问题是,在jsp里面必须import这个ejb的jar
这样这个jar必须放在weblogic的classpath下面
这样岂不是很麻烦,每写一个ejb都要在classpath里面加一个
另外,对于分布应用的时候,一个机器上的jsp调用另外一个机器上的ejb怎么
实现,难道还要拷贝过来吗?
请大虾指教
|
你可以用WebLogic的console来部署EJB,很方便。
不需要加在CLASSPATH里,部署后直接在JSP里import这个EJB包就可以了
在其他机器上调用一个EJB,只要知道EJB机器的IP和JNDI名就可以了。
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, "t3://ip:7001");
Context ctx = new InitialContext(properties);
Object ref = ctx.lookup("CmpBeanRemote");//HOME接口JNDI名
cmpRemoteHome = (CmpRemoteHome) PortableRemoteObject.narrow(ref, CmpRemoteHome.class);//得到HOME接口
不需要加在CLASSPATH里,部署后直接在JSP里import这个EJB包就可以了
在其他机器上调用一个EJB,只要知道EJB机器的IP和JNDI名就可以了。
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, "t3://ip:7001");
Context ctx = new InitialContext(properties);
Object ref = ctx.lookup("CmpBeanRemote");//HOME接口JNDI名
cmpRemoteHome = (CmpRemoteHome) PortableRemoteObject.narrow(ref, CmpRemoteHome.class);//得到HOME接口
|
JSP直接调用EJB,结构虽然简单。但不是软件工程所喜欢的事,你必须在EJB开发测试完了才能写JSP。
一般常用的做法都是写一个Bean来封装Session EJB, 写视图类来包装Entity bean。
另外,你一定要这样做的话,那么可以告诉你的是:
普通类调同一个服务器的已经发布了EJB类,无需加在classpath.但是调用其他服务器的,则必须加。而且,EJB要调用的类也必须加在classpath,是不是很麻烦。所以,良好的开发体系很重要。
一般常用的做法都是写一个Bean来封装Session EJB, 写视图类来包装Entity bean。
另外,你一定要这样做的话,那么可以告诉你的是:
普通类调同一个服务器的已经发布了EJB类,无需加在classpath.但是调用其他服务器的,则必须加。而且,EJB要调用的类也必须加在classpath,是不是很麻烦。所以,良好的开发体系很重要。
|
不拷贝到本地是根本不可以的。
你想想,如果你在本地没有这个类,你又如何能造型出这个类呢?
所以本地必须有hello.jar,其实也不需要hello.jar中的所有的类,
但至少要一个home接口和一个remote接口。
你想想,如果你在本地没有这个类,你又如何能造型出这个类呢?
所以本地必须有hello.jar,其实也不需要hello.jar中的所有的类,
但至少要一个home接口和一个remote接口。
|
你可以在config.xml文件中配置好你的EJB,应该Sample里有的,然后再JSP里就可以使用了,EJB的优点不就在于分布式应用,不需要靠过来的!
|
一般不要用JSP直接去调用EJB,因为有防火墙的原因,建议在EJB和JSP之间加个JAVABEAN,这样用JSP来调用JAVABEAN,就没有防火墙的原因了。