当前位置:  技术问答>java相关

我不是垃圾,别害怕靠近我。

    来源: 互联网  发布时间:2015-05-03

    本文导语:  我用JBUILDER6和WEBLOGIC编译出现这个错误,我该怎么办呀? "Untitled1.ejbgrpx": ERROR: Error from ejbc: ERROR: The classes which ejbc generated from your home and remote interfaces cannot be loaded.  Please ensure that you have set the -d ...

我用JBUILDER6和WEBLOGIC编译出现这个错误,我该怎么办呀?

"Untitled1.ejbgrpx": ERROR: Error from ejbc: ERROR: The classes which ejbc generated from your home and remote interfaces cannot be loaded.  Please ensure that you have set the -d option to a writeable directory.

|
对不起,刚才的那些话可能说得不是很好,我原来没有用过jbuilder+weblogic,我一直在用jbuilder+jboss,刚才我试了一下,发现和你的问题一样,然后我修改了一下就可以不出现错误了,方法如下:
打开EJB Module的属性窗口,选择最上面的paths标签,再选择weblogic 6.x标签,钩掉Use EJBC to generate stub files
你试试这个对你能不能好用。
祝好运。反正我现在没有出现异常了,但是进一步的问题我就不是很清楚了,我原来使用的是jboss,我对weblogic不熟。
^_^

|
楼上的楼上,啥叫不道义啊,许多问题的解决是不能完全依靠别人的,更多的是要靠自己,如果别人给出了提示而自己不去思考不去验证,问题解决不了那能怪谁?!~~

|
然后 在还要添加好多东西呢 你可以看看了,做ejb最麻烦的就是配置了
怎么可能这么简单。。。。!!!!!!
  1. 首先新建一文件夹,2. 如:D:myproject,3. 作为新项目的路径。(强烈建议)
4. 建项目:  在JBuilder中工具栏中New,5. 在Object Gallery对话框中New选项卡,6. 选Project,7. OK.   将Project Name改为account、将Root Path 改为刚才新建的文件夹。     直到finish。
8. 设置server类型:JBuilder5.0以上的用户,9. 右击项目文件,10. property,11. servers选项卡,12. 通过浏览将最上排的Application Server改为WebLogic Application Server 5.1,13. Web Server可以不14. 选。如使用JBuilder4.0,在property对话框中,15. 选enterprise选项卡,16. 修改Application Servers即可。
17. 建立EJB组:新建,18. Enterprise选项卡,19. Empty EJB Group 项,20. ok后将Name改为account。
21. 添加entity bean: 新建,22. Enterprise选项卡,23. Enterprise JavaBean项,24. 确认其EJB groups为account.ejbgrp,25. Next后将classname改为AccountBean。  Options中,26. 选最后一项Container Managed Permission EJB 1.1 entity bean,27. 并将Primary key class 改为 java.lang.Integer。
28. 添加 session bean:步骤如上,29. 将Name改为ObjIdBuilderBean,30. Options选第二项Stateful session bean。
31. 为了加快开发学习的过程,32. 在account目录下已存在各文件,33.  你可以将他们copy到你相应的目录下(D:myprojectaccountsrcaccount)并覆盖原有文件。然后,34. 在Jbuilder中按Add(工具栏第二行第一个),35. 将原来没有的文件添加到项目中来。同36. 时,37. 将文件依次Make (右击文件名,38. 快捷菜单中有),39. 看看是否有错。如有,40. 则可能是文件路径错,41. 更改每个文件中的import以及package 试试。
42. 项目文件介绍:
account.ejbgrp是EJB group文件,负责管理所有的EJB文件、EJB的部署(deploy)以及*.jar文件的生成。你可以双击它后,看到所有的EJB结构,部署描述符(deployment descriptor,源文件为*.XML文件)。

AcountBean.java是(Container Managed Persistence)Entity Bean,其中包含了各种方法的实现。Account.java是其Remote Interface,定义了各种商业方法的接口。AccountHome.java是其Home Interface,定义了Bean的生成、查询、删除等方法的申明。

ObjIdBuilderBean.java是(Stateful) Session Bean,ObjIdBuilder.java是其Remote Interface,ObjIdBuilderHome.java是其Home Interface。

ContextFactory.java是一个定义Server Context(上下文类)的类。运用该类,就可通过JNDI定位Home Object,继而建立EJBObject,调用EJB。 

注:给class命名时注意命名规则,类名首字母要大写。覆盖后account下应有7个文件。
三、EJB的部署
1. 建立数据源:  控制面板->管理工具->数据源 (ODBC)->用户DSN->添加   ->SQLServer,2. 名3. 称:test; 服4. 务器:SNOOPY。  下一步后:选SQLServer验证,5. 将登录的Id和密码都设为intranet。下一步后:选“改变默认数据库”,6. 改为test。
7. 建立与数据库的连接:  在JBuilder中,8. 左上角窗口中双击account.ejbgrp,9. 左下角窗口中单击account,10. 右面窗口显示entity bean的属性。(这些工作都要在文件覆盖过后进行)  
2.1 设persistence选项卡:      persistence type:container; tables:employee。  在container managed fields 中,将objId  选为isPK(通过check),成为主键;同时将column name(数据库中字段)自上至下依次设为objid(注意大小写), account, password, 分别与field name(bean中字段)objId, account, password相对应,完成与数据库中对应字段的连接。
2.2 设property选项卡:     add按钮,   Name:pool-name;type:Sting;  Value:employeePool;这样完成了连接池的建立。(注:连接池:动态Web站点往往用数据库存储的信息生成Web页面,每一个页面请求导致一次数据库访问。连接数据库不仅要开销一定的通讯和内存资源,还必须完成用户验证、安全上下文配置这类任务,因而往往成为最为耗时的操作。如果某个基于数据库的Web应用只需建立一次初始连接,不同页面请求能够共享同一连接,就能获得显著的性能改善,连接池就是这么一个东东)
2.3 设finders选项卡:   method:findByAccount();  where clause:$0=account;作用:findByAccount()是一个本地接口中定义而未实现的查询函数,通过finder 选项卡的设置,让容器自动为其生成一个符合where clause条件的SQL查询语句,并在该函数被调用时完成对数据库的操作(这就是所谓的方法插入,其实不过如此,这点SQL语句我都不会写?通过container插入方法再查询慢的像蜗牛,大家了解一下吧)。
11. 编译连接:  左上角窗口中右击account.ejbgrp,12. Make。  如果编译无错,13. 其树下就会产生一个account.jar的打包文件(可用winRAR解压)。该文件用于在weblogic中部署时用,14. 包含了所有的class文件和部署操作符。
15. 配置weblogic:  
4.1先将myproject中的account.jar文件copy到weblogicmyserver目录下(可以覆盖)。
4.2在weblogic目录下有一weblogic.properties文件,右击用UltraEditer-32打开(如果装了的话)。
实现连接池pool: 在WEBLOGIC DEMO CONNECTION POOL PROPERTIES段(以一排######开头)的结尾处(下一排###########之前)。加入以下代码:
   weblogic.jdbc.connectionPool.employeePool=
       url=jdbc:odbc:test,
       driver=sun.jdbc.odbc.JdbcOdbcDriver,
       loginDelaySecs=1,
       initialCapacity=2,
       maxCapacity=10,
       capacityIncrement=2,
       props=user=intranet;password=intranet;
weblogic.allow.reserve.weblogic.jdbc.connectionPool.employeePool=everyone
这样就完成了JDBC-ODBC桥的连接。
4.3 部署*.jar文件:WEBLOGIC EJB DEMO PROPERTIES段的结尾。加入weblogic.ejb.deploy=
        c:/weblogic/myserver/account.jar
15.4  双击weblogic目录下的starweblogic文件,15.5 启动Server,15.6 看看是否连接、部署无误。(deploy成功的标15.7 志:startWeblogic后,15.8 DOS窗口一直执行到Weblogic Server Started,15.9 并且每行中间基本上都是“”,而15.10 不15.11 是出错标15.12 记“”且跟着一串at,15.13 告诉你哪儿有Exception。)
注:1.所加代码的行首不能有"#","#"代表注释。
2.行尾有""的代表续行符。其余有的行尾有";",而有的没有。
3.可以不把*.jar文件copy到weblogicmyserver下,只要deploy时weblogic.ejb.deploy=
/*.jar就可以(注意路径中用"/")。(此条:Beginner can omit it)
四、测试
1. 首先在weblogic目录下双击startweblogic,2. 使server 运行(这时Bean才有效)。
3. 新建,4. enterprise选项卡,5. EJB test client项,6. 建立一个测试程序。同7. 时,8. 为方便测试,9. 右击account.jpx,10. property,11. run选项卡,12. 将compile before running 点为不13. 选。
14. 在测试程序中第361行左右,15. main()函数中添加如下代码:
    try{
      client.create("mqiao","mqiao");
      Account account=client.findByAccount("mqiao");
      if(account!=null){
        System.out.println("The password of mqiao is"+account.getPassword());
      }else{
        System.out.println("The account doesn't exist.");
      }
    }catch(Exception e){
      e.printStackTrace();
}
对该测试程序Run了以后,你可以在测试窗口中看到运行的状态:创建bean,调用方法,每条命令执行所花时间,命令执行的结果。
16. 另一个应用  新建一EJB test client,17. 在main()中添加如下代码:
Account account=client.findByAccount("mqiao");
      if(account!=null && account.isValid("mqiao")){
        System.out.println("The password of mqiao is correct.");
      }else{
        System.out.println("Password Invalid.");
      }
    }catch(Exception e){
      e.printStackTrace();
}
这里要调用isValid()方法,该方法的实现在AccountBean.java中:
public boolean isValid(String aPassword){
    if(password==null&&aPassword==null){
       return true;
    }else if(password!=null&&password.trim().equals(aPassword)){
      return true;
    }else {
    return false;
    }
  }
因为SQLServer中字符串一般是定长的,最后往往会填有空格。这就会导致equals()方法将正确的密码判错。所以在equals()之前先trim()以下。但trim()对空字符串会判错,我又增加了一些逻辑处理。

注:每当对bean修改后,必须全项目的重新编译,并用新的*.jar文件覆盖weblogic中的*.jar。
五、小结
通过了以上步骤,我们经历了EJB的配置、建立、部署、测试的全过程。经过了这些实际操作过程,再配合书本上系统的理论学习,相信你可以对EJB的机理有一定的了解。
我们通过copy源程序的方法,是想封装一些比较复杂的问题,程序的执行过程可以参考TestClient源程序了解。
采用TestClient测试的作用是检验EJB有没有错,但应用时往往采用JSP->Servlet->Session Bean->Entity Bean or DAO的结构,这次暂不介绍。

附:大体介绍
Session Bean-ObjIdBuilder负责动态生成id号,
Entity Bean-Account在创建的过程中,调用ObjIdBuilder,产生一个objid,并配合create()中的两个参数,在数据库中建立一条记录。其余的函数可由名字联想。


FAQ:
有很多同事反映第四步--测试无法进行,其实是第三步--deploy有错。
可以看看4.4中deploy成功的标志。 
deploy出错,很多是因为一/2没

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 怎么用javamail彻底删除邮件。不是放到垃圾箱里。。
  • 红旗linux是不是垃圾?
  • java 能做什么系统?CS是不是不行呀?开发效率岂不是很低
  • ●J2SDK和JDK是不是一个东西?如果不是,那它是什么?●
  • 在内核为2.4版本下开发的程序在2.6下编译是不是很容易会发生错误?不是应该往上兼容吗?
  • java里有没有象vc里的sleep(1000)一样的功能的东西 当然不是实现Runnable不是继承线程类
  • 急!!谁了解macintosh?能不能给我介绍介绍?是不是跟linux差不多?使用开发工具JDK,这是不是不JAVA?
  • 关于FIFO算法的问题(是不是页面“命中”和“淘汰”的页面不是的唯一啊
  • 看看会输出什么?结果是equal b,==在string里不是比较两个串是不是相等嘛?
  • Javamail要JavaBeans Activation Framework 的支持,是什么意思?是不是也要下载JavaBeans Activation Framework?他是不是也是一个包?是不
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 我的jdk配置有问题吗?为什么提示总是‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件
  • vasual cafe 中有个包叫symantec,它是不是标准的j2se包,如果不是,用它写出的程序如何在通用?
  • 请问:我怎么样使得输入"GCC"以后执行的是新安装的新版本的GC,而不是旧的!以及我的操作是不是正确?
  • 网站的站内搜索是怎么实现的?怎么做?在网页的头元素中有一关键词元素,是不是就是给站内搜索用的?如果我在Sina中登记我的网站,那么是不是
  • java中有没有这样的函数就是判断一个字符串里面是不是含有另外一个字符串!例如 abcdef 里面查找是不是含有de谢谢了~初学者
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请教!UNIX是不是很难啊
  • 如何默认启用vim而不是vi
  • mplayer 源代码中的API是什么API呀,不是QT呀?是什么呢?
  • Shell中是不是只有“空串”没有NULL?
  • locate是不是不搜寻/tmp下面的文件


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3