站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题有关websphere+myeclipse+eclipse环境下ejb开发的问题

有关websphere+myeclipse+eclipse环境下ejb开发的问题

摘要: 有关websphere+myeclipse+eclipse环境下ejb开发的问题


我现在在eclipse+myeclipse的环境下已经开发好一个sessionBean,主要是通过xdoclet生成他的主接口,组件接口以及实现类的代码,我把这个sessionBean部署到webshere之后,写了一个测试类
代码如下:
public class EJBTest {

/**
* @param args
*/
public static void main(String[] args) {
Properties properties=new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");
properties.setProperty(Context.PROVIDER_URL,"iiop://localhost:2809");
Context context;
try {
context = new InitialContext(properties);
Object obj=context.lookup("ejb/HelloWorld");
HelloWorldHome hwh=(HelloWorldHome)PortableRemoteObject.narrow(obj,HelloWorldHome.class);
HelloWorld hw=hwh.create();
String s=hw.hello();
System.out.println(s);
} catch (NamingException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (RemoteException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (CreateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}


}

}
可是当运行该测试类的时候,每次都报异常,主要含义就是要寻找stub类,但是我不知道在myeclipse或者eclipse中怎么生成主接口的stub类,请高手指点,只要成功,将以重分谢之。
最好能和我用msn联系:yao_46@163.com


应该是你的部署有问题,你先到websphere控制台看看你的EJB是不是已经成功部署了
我是用websphere的部署工具来做部署的。


对,我是用websphere的部署控制台部署的,部署时没有任何问题。现在的问题是你开发的ejb是不是在主接口和组件接口的时候是否选择的是远程类的接口,如果是远程类型的接口的话,肯定是用iiop通讯的,那你怎么生成stub类,你用的开发工具如果是jb的话,肯定没有问题,因为jb可以生成这个stub类,但是现在我用的是eclipse,在我的jar包里边,根本就没有这个文件,他怎么可能调用,所以,请各位高手看清楚问题,我现在的问题是怎么在eclipse+myeclipse的环境下生成stub类,,谢谢大家


还是希望各位能和我用qq沟通,283899080,,非常感谢


myeclipse 利用 xdoclet可以生成各种 应用服务器平台的 stub 类的。
包括ibm 的 websphere。
myeclipse 得到ibm 的极力支持,而 websphere 本身就是ibm 的,想想也是可以的。

放心用吧。


呵呵,我对xdoclet修改了好多地方,可是就是生成不了stub类,您能否把xdoclet关键代码给我贴出来让我看看啊,谢谢


websphere的EJB部署的时候有一些xmi的文件,这些文件是用websphere的部署工具(名字忘记了,不是控制台而是一个单独的程序,WAS5安装之后里面有的)打包jar的时候产生的。我一开始自己打包,总是不行,结果还是用了websphere自己的部署工具打包才搞定的。


兄弟 ,多谢指点,可是我现在用得是websphere6,你能不能告诉我他的打包工具吗,谢谢了!


infowain,您好 ,我按照你的知道找到一个ejbdeploy.bat,应该是这个部署工具,可是我在dos下面执行该命令得时候,报下边这个错,请您再给指点一下:
D:/Program/IBM/WebSphere/AppServer/deploytool/itp>ejbdeploy D:/yqq/project/Hello
World/classes/HelloWorld.jar d:/yqq D:/yqq/project/HelloWorld/classes/HelloWorld
a.jar
Starting workbench.
Creating the project.
正在验证
通过 EJB WebSphere Extension Validator 对 HelloWorld.jar 的验证已完成。已报告
[*Error] /HelloWorld.jar(类:com.ejb.HelloWorldSession): CHKJ2907E:不能反映类型
com.ejb.HelloWorldSession 或它的某个超类型。检查类路径。
[*Error] /HelloWorld.jar(类:com.interfaces.HelloWorld): CHKJ2907E:不能反映类型
com.interfaces.HelloWorld 或它的某个超类型。检查类路径。
[*Error] /HelloWorld.jar(类:com.interfaces.HelloWorldHome): CHKJ2907E:不能反映
类型 com.interfaces.HelloWorldHome 或它的某个超类型。检查类路径。
[*Error] ejbModule/META-INF/ejb-jar.xml(企业 bean:HelloWorld): CHKJ2802E:不能
反映 类 com.ejb.HelloWorldSession 或它的某个超类型。检查类路径。
[*Error] ejbModule/META-INF/ejb-jar.xml(企业 bean:HelloWorld): CHKJ2803E:不能
反映 接口 com.interfaces.HelloWorldHome 或它的某个超类型。检查类路径。
[*Error] ejbModule/META-INF/ejb-jar.xml(企业 bean:HelloWorld): CHKJ2804E:不能
反映 接口 com.interfaces.HelloWorld 或它的某个超类型。检查类路径。
Shutting down workbench.

Execution Halted: Validation Errors Reported
6 Errors, 0 Warnings, 0 Informational Messages


我现在已经用ejbdeploy生成了那几个需要的类,并且已经实现了我需要的功能,但是我现在想知道在myeclipse下给websphere开发ejb又没有快速的方法,总不能每次都先生成jar,然后用ejbdeploy生成那几个stub类吧,那位高手有高招阿,声明,在这里只说myeclipse,其他工具不需要,还有就是我记得jboss和weblogic下的ejb不需要这些stub类,是为什么啊,请高手指点。


强烈关注~
顶一下~


强烈关注~



恭喜楼主搞定了,我以前也是摸索了好久才搞定websphere的,其他几个server我也试过,jboss和weblogic倒是差别不大,它们现在不需要你自己产生stub再打包部署了,部署或者执行的时候它们会自己产生stub。就是websphere比较奇怪,大概IBM比较牛吧,一定要你自己产生stub。

我后来都是用ant写个build脚本,这样灵活性比较好,可以带参数,决定产生在哪个server上部署的包。



你可以看看weblogic部署后产生的项目目录,里面是由stub类的,可见weblogic是部署的时候帮你做了这件事。
而jboss部署的时候没有产生stub,我想它是在每次载入ejb的时候临时产生stub的。



↑返回目录
前一篇: 【经典】请问一个关于j2ee数据库操作的问题【经典】
后一篇: 在线求八叉树算法