原因可能出自jdbc驱动上。比如连接SQL SERVER数据库,采用sun.jdbc.odbc.JdbcOdbcDriver时,find方法会抛出异常,而换用weblogic.jdbc.mssqlserver4.Driver就没问题。

解决方案 »

  1.   

    我用的是oracle数据库,连接池jdbc用的oracle.jdbc.driver.OracleDriver驱动,数据源采用tx数据源。
        若数据量太大,那weblogic总有个解决办法把,我在jboss-tomcat上部署和调用均没有问题。
      

  2.   

    应该不是数据量的问题,若是会抛超时异常,而你这里抛出空指针异常。
    java.rmi.RemoteException: EJB Exception: ; nested exception is: 
    javax.ejb.EJBException: Exception executing finder 'findByAll': 
    java.lang.NullPointerException
    java.lang.NullPointerException
    我想会不会是数据的问题,比如select出null,实体bean又对null进行了某些操作?不敢肯定,你看看具体bean里怎么写的。另外可以试试,比如QL写成:select object(p) from FwwzUser p where 1=1。不知QL是否支持top命令,如支持,再top出几条看看。
      

  3.   

    首先谢谢nm_2j(夜奔),我将ql语句的distinct去掉后再部署、调用,正常;而后,又将ql语句的distinct加上也正常了,weblogic真是莫名其妙。
      

  4.   

    尽量少用QL语言,它会给你的发布带来问题。比如你丛weblogic迁移到websphere上时,因为使用了QL,可能你的程序不仅需要重新编译,甚至还需要修改相应的代码。我的做法是自己写DAO,查询得到主键,然后循环调用findByPrimaryKey(key),这样,部署时才不会出现上述问题。
      

  5.   

    j2ee不是说尽量使用cmp及ql语言,才好移植吗?还说所有的应用服务器均会实现这些ql语言,也许我们的水平有限吧。
      

  6.   

    j2ee提倡尽量使用cmp及ql语言,但各家厂商是否支持那是令一回事。就好比sql server和oracle一样,虽然都是基于sql 92标准,但各自又有不同的子集,除非你都按标准来写,否则移植时就会有问题。
      

  7.   

    distinct不是ejb2.0 QL关键字吗?难道WEBLOGIC没有实现它?
    还有一个语句也报错:
    select distinct object(p) from FwwzUser p where p.yldnm like concat(?1,"%")该语句同样在jboss-tmcat运行正常,在weblogic7.0.2运行异常