在Weblogic+JBuilder7使用时的奇怪问题

类别:Java 点击:0 评论:0 推荐:

    一周前,老师让我们用Java去做项目,说句实话,我对Java真的是一知半解,绝对是个门外汉,无奈,老师的任务不能不完成,只好硬着头皮去做。
    我们有一个项目叫“数据仓库”,以前是师兄们做的,采用的是Tomcat做服务器,JSP+JavaBean做开发。后来老师为了“提高项目的技术含量”,决定改做J2EE版本,我们这里几乎没有人用J2EE做过项目,于是大家就开始到处找资料,下载编译器,忙得不亦乐乎。
    最终,大家决定使用Oracle9i作数据库,Weblogic7+JBuilder7作开发环境,原因很简单Weblogic对J2EE支持的比较好,JBuilder开发环境还不错,对机器要求不是太高(我们的机子比较差,P3-550+256M内存,刚好满足最低要求:),本来以为很简单的配置,很容易就会搞定,但是结果却让人大吃一惊。
    按照培训资料上面说的,一步步装好了Weblogic7,测试console,通过,然后再按照说明把JBuilder7也装上,并按照顺序配置好了,大致流程如下:
    Weblogic和JBuilder7整合后,经过配置,做出的Session Bean是好的,说明配置正确。
    然后测试实体Bean:
    1、设置Oracle9i的驱动:
       在JBuilder7中,Tools-->Enterprise Setup...-->Database Driver,点击Add,选择Oracle的位置D:\Oracle\Ora91\jdbc\lib\classes12.zip,确定后,驱动在列表中出现,然后重新启动JBuilder
    2、创建工程Demo,然后创建一个EJB Module 取名Hustli,然后导入数据库Schema信息。
    3、输入数据库的连接信息:我采用的是别人的机器上的oracle9,机器名是flyers,SID=daito,具体信息如下:
       Driver: oracle.jdbc.driver.OracleDriver
       URL:    jdbc:oracle:thin:@flyers:1521:daito      
       user=daito password=daito
       JNDI NAME : DataSource
    4、成功后,创建CMP EJB,输入EJB信息,其中interface采用的是remote
    5、配置Weblogic中JDBC Pool和Data Source:
       JDBC Pool:
    Name: Pool
       URL:  jdbc:oracle:thin:@flyers:1521:daito
       Properties: user=daito
       Password: daito
       Initial Capacity: 5
       Maximum Capacity:10
       Test Table Name: hustli(我建的一个表)
       在Targets里面加入myserver,其余采用默认配置。
     
    Data Source:
       Name: DataSource
       JNDI Name:DataSource
       Pool Name:Pool
       在Targets里面加入myserver,其余采用默认配置
    然后重新启动weblogic的设置页面,成功
  6、对EJB打包,deploy成功。
  7、利用JBuilder7自动生成测试程序,改动main函数如下:
    public static void main(String[] args)
        {
                try
                {
                        Client client = new Client();

                        HustliRemoteHome home=client.getHome();
                        HustliRemote r=home.findByPrimaryKey("jjli");
                        System.out.println(r.getAge());
                }
                catch (RemoteException ex)
                {
                        ex.printStackTrace();
                }
                catch(FinderException e)
                {
                        e.printStackTrace();
                }
        }
       结果出现错误,在Object ref = ctx.lookup("HustliRemote");(自动生成的)
    错误如下:
    javax.naming.NameNotFoundException: Unable to resolve 'HustliRemote' Resolved: '' Unresolved:'HustliRemote' ; remaining name 'HustliRemote'
    后来这个问题也在各位师兄的机器上出现,毫无例外。
    对于这个问题,大家讨论了半天也没有解决,于是各自分头散去,大家静下心来,把各种信息自信的研究了,发现有一个共同点:在程序编译的时候,有一个警告,大家开始没有注意,后来就都注意到这个问题了,警告大致的意思是:临时文件目录有空格,可能导致致命的错误。
    但是我们发现系统的环境变量里面的确有2各设置:TEMP和TMP,但是在用户变量里面一个、系统变量里面一个,按照我的观点,编译器应该先搜索系统变量里面的,系统变量里面的值是C:\WINNT\TEMP,这应该没有什么问题,于是我们在C盘建了一个目录,名字叫Temp,并且把用户变量里面的TEMP和TMP的值都设置为C:\Temp,然后保存,启动JBuilder7,一切OK!
    这个问题,看来是不是很BT?我很奇怪为什么JBuider会先找用户变量?
  
    如果上面的问题不叫问题,那是我们没有注意警告,下面的问题就太让人郁闷了。
    Weblogic+JBuilder装好了之后,运行了2天,然后为了杀毒,我又装上了几个杀毒软件,开始全盘扫描硬盘,使用LoveGate居然杀到了几个病毒,然后把感染的文件全部删除,重新启动机器,然后做了点别的事情,就把这件事情给忘掉了,等到明天启动JBuilder,不幸的事情发生了,deploy组件的时候,发现报错:无法连接t3:/localhost:7001。
    这岂不是怪事?我的服务器明明开着的,一点异常的表现都没有,然后我关掉JBuilder,用Weblogic控制台打开服务器,运行良好,结果当在地址栏里输入:http://localhost:7001时,居然找不到连接。
    开始我怀疑是weblogic出了问题,然后卸载了weblogic重新安装,问题依旧,最后把weblogic和JBuilder一起卸掉,重新装,问题依然顽固的出现在我面前,究竟是怎么了?难道是杀毒的时候把重要的文件删除了?没有办法,只好重新格式化硬盘,重新装了系统,首先把weblogic装上,运行良好,装上JBuilder,配置完毕,一切都没有任何问题,然后把一系列的软件装上,自然也装了杀毒的KV3000,然后运行JBuilder,那个奇怪的问题又出现了!!!!
    为了解决问题,我决定把安装的软件一个个的卸载,最后发现,如果卸载了KV3000,JBuilder就没有任何问题,否则,只要打开实时监测,就无法运行JBuilder7。
     没有办法,只好把KV3000卸载。个人怀疑是不是KV3000对Java的运行进行监视,然后当作病毒杀掉,当然这只是猜测,如果有那位高手能够指点一二,不胜感激。

本文地址:http://com.8s8s.com/it/it17244.htm