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

lianga
03-07-06 2 165



网上的资料全是通过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>