jbuilder + jboss 应用EJB时出错(调好很长时间了老出错,郁闷!_!)

03-07-06 lianga

网上的资料全是通过JB和jboss链接sessionEJB的,并没有介绍如果链接实体Bean

我在jb中配置好了JBOSS的SERVER,部曙也正常可以jsp servlet也可能通过,我想通过SERLVET调出sessinoEjb,然后通过sessionEJb来调出实体Bean从数据库中取出一条记录,我把sybase-service.xml也放到

D:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\deploy目录下面了,后面并没有报任何错误有这种一句

02:06:56,828 INFO [jdbc/SybaseDB] Bound connection factory for resource adapter'JBoss LocalTransaction JDBC Wrapper' to JNDI name 'java:/jdbc/SybaseDB'

我在我的sessionEjb中是这样写的

Jt01Test01Home Home ;

Jt01Test01 jt01Test ;

String _strReturn ;

try{

System.out.println("11111111111111111111");

Home = (Jt01Test01Home)(new InitialContext().lookup("Jt01Test01"));

System.out.println("2222222222222222222");

jt01Test = Home.findByPrimaryKey(_strCode) ;

System.out.println("3333333333333333333333");

_strReturn = jt01Test.getName() ;

System.out.println("44444444444444444444444");

return _strReturn ;

}catch(Exception ex){

System.out.println("ejb error message is " + ex.getMessage());

}

return null ;

我是想通过调用实体Bean的HOME通过findByPrimaryKey返回一个实体Bean然后通过getname把记录的NAME给取出,编译也通过,部署也很正常,但一调用时返因一个NULL来,后台打出如下错误信息

02:13:29,343 INFO [STDOUT] 111111111111111111

02:13:29,343 INFO [STDOUT] 222222222222222222

02:13:29,500 INFO [STDOUT] ejb error message is (No such entity!) 就是这个No such entity!

02:13:29,500 INFO [STDOUT] -- Succeeded: getName(001)

02:13:29,500 INFO [STDOUT] -- Execution time: 297 ms.

02:13:29,500 INFO [STDOUT] -- Return value from getName(001): null.

请问我到底错在什么地方的是我的在Import database时写的jndi不对,我写的是

java:/SybaseDb

java:/jdbc/SybaseDB

SybaseDB

jdbc/SybaseDB

这些我都试过都不行,到底是如何写,还是就是我通何判断我的JBOSS和数据库是链接通的 我的sybase-service.xml部分内容如下我也在classpath指定了sybase数据库的JDBC的JAR文件

<mbean code="org.jboss.resource.connectionmanager.RARDeployment"

name="jboss.jca:service=LocalTxDS,name=SybaseDB">

<attribute name="JndiName">jdbc/SybaseDB</attribute>

<attribute name="ManagedConnectionFactoryProperties">

<properties>

<!-- Sybase jConnect URL for the database.

NOTE: The hostname and port of made up values. The optional

database name is provided, as well as some additinal Driver

parameters.

-->

<config-property name="ConnectionURL" type="java.lang.String">

jdbc:sybase:Tds:127.0.0.1:5000/mydb

</config-property>

<config-property name="DriverClass" type="java.lang.String">

com.sybase.jdbc2.jdbc.SybDriver

</config-property>

<config-property name="UserName" type="java.lang.String">

sa

</config-property>

<config-property name="Password" type="java.lang.String">

111111

</config-property>

</properties>

</attribute>

<!--Below here are advanced properties -->

<!--hack-->

<depends optional-attribute-name="OldRarDeployment">

jboss.jca:service=RARDeployment,name=JBoss LocalTransaction JDBC Wrapper

</depends>

</mbean>

mcindo
2003-07-20 19:02

jboss默认用的数据源时hsqldb,见conf中的standardjbosscmp-jdbc.xml文件 <defaults>

<datasource>java:/DefaultDS</datasource>

<datasource-mapping>Hypersonic SQL</datasource-mapping>

见到了吧.也就是说,你的连接联到了hsqldb上了,再部署是,如果没有表会自动给你建立一个,这就是为什么不报错的原因.

在你的部署文件jbosscmp-jdbc.xml中加上这段话

<jbosscmp-jdbc>

<defaults>

<datasource>java:/SybaseDB</datasource>

<datasource-mapping>Sybase</datasource-mapping>

</defaults>

<enterprise-beans>

<entity>

.......

再部署就可以了.(如果你的sybase-service.xml正确部署了)

No such entity!是说数据库中没有找着记录,这个要注意查一下数据库中有没有记录.在写程序时find方法是应该catch ObjectNotFound异常的!

mcindo
2003-07-20 19:03

刚才的文件发失败,配置如下,加到jbosscmp-jdbc.xml中,格式可参见dtd文件

<defaults>
      <datasource>java:/SybaseDB</datasource>
      <datasource-mapping>Sybase</datasource-mapping>
</defaults>
<p>