接上帖!
09. Room2.java 的内容。
package s31;import javax.ejb.EJBLocalObject;public interface Room2
    extends EJBLocalObject {
  public void setName(String name);  public String getName();  public void setCapacity(String capacity);  public String getCapacity();
}
-------------------------------------- end: 09. Room2.java 的内容。10. Room2Bean.java 的内容。
package s31;import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.CreateException;
import javax.ejb.RemoveException;public abstract class Room2Bean
    implements EntityBean {
  EntityContext entityContext;
  public Object ejbCreate(String capacity) throws CreateException {
    setCapacity(capacity);
    return null;
  }  public void ejbPostCreate(String capacity) throws CreateException {
  }  public void ejbRemove() throws RemoveException {
  }  public abstract void setName(String name);  public abstract String getName();  public abstract void setCapacity(String capacity);  public abstract String getCapacity();  public void ejbLoad() {
  }  public void ejbStore() {
  }  public void ejbActivate() {
  }  public void ejbPassivate() {
  }  public void unsetEntityContext() {
    this.entityContext = null;
  }  public void setEntityContext(EntityContext entityContext) {
    this.entityContext = entityContext;
  }
}
-------------------------------------- end: 10. Room2Bean.java 的内容。11. Room2Home.java 的内容。
package s31;import javax.ejb.EJBLocalHome;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import java.util.Collection;public interface Room2Home
    extends EJBLocalHome {
  public Room2 create(String capacity) throws CreateException;  public Room2 findByPrimaryKey(Object pk) throws FinderException;  public Collection  findAll() throws FinderException;
}
-------------------------------------- end: 11. Room2Home.java 的内容。12. Room2Remote.java 的内容。
package s31;import javax.ejb.EJBObject;
import java.rmi.RemoteException;public interface Room2Remote
    extends EJBObject {
  public void setName(String name) throws RemoteException;  public String getName() throws RemoteException;  public void setCapacity(String capacity) throws RemoteException;  public String getCapacity() throws RemoteException;
}
-------------------------------------- end: 12. Room2Remote.java 的内容。13. Room2RemoteHome.java 的内容。
package s31;import javax.ejb.EJBHome;
import javax.ejb.CreateException;
import java.rmi.RemoteException;
import javax.ejb.FinderException;
import java.util.Collection;public interface Room2RemoteHome
    extends EJBHome {
  public Room2Remote create(String capacity) throws CreateException, RemoteException;  public Room2Remote findByPrimaryKey(Object pk) throws FinderException,
      RemoteException;  public Collection  findAll() throws FinderException, RemoteException;
}
-------------------------------------- end: 13. Room2RemoteHome.java 的内容。帖子已经全部贴出。

解决方案 »

  1.   

    00. 目录。
        01) 开发环境。
        02) jboss 中 mssql-ds.xml 的设置。
        03) jboss 中 mssql-xs-ds.xml 的设置。
        04) 工程 s31 中 ApplicationModule_s31.ear 文件包含的内容。
        05) ApplicationModule_s31.ear 文件中 EJBModule_s31.jar 文件包含的内容。
        06) EJBModule_s31.jar 文件中 s31 包含的内容。
        07) DataSource_s39 在 ejb-modeler-schema.xml 的定义。
        08) jboss 输出的 error,共7处。
        09) Room2.java 的内容。
        10) Room2Bean.java 的内容。
        11) Room2Home.java 的内容。
        12) Room2Remote.java 的内容。    
        13) Room2RemoteHome.java 的内容。错误信息在 08) 中。
      

  2.   

    你的数据源定义有问题,我学ejb也没多久,没听过ejb-modeler-schema.xml,
    不过我觉得你在其中定义datasource为DataSource_s39
    而jboss中定义数据源为MYSQLDS肯定有问题啊,好几个错都是无法绑定DataSource_s39
    你不妨试一下将DataSource_s39改为MYSQLDS试试我现在用jbosscmp-jdbc.xml定义数据源:
       <defaults>
          <datasource>java:/OracleDS</datasource>
          <datasource-mapping>Oracle9i</datasource-mapping>
          <create-table>true</create-table>
          <remove-table>false</remove-table>
          <read-only>false</read-only>
          <time-out>300</time-out>
          <pk-constraint>true</pk-constraint>
          <fk-constraint>false</fk-constraint>
          <row-locking>false</row-locking>
          <preferred-relation-mapping>foreign-key</preferred-relation-mapping>
          <read-ahead>
          <strategy>on-load</strategy>
          <page-size>1000</page-size>
          <eager-load-group>*</eager-load-group>
          </read-ahead>
          <list-cache-max>1000</list-cache-max>
       </defaults>
    然后在JBOSS的deploy目录下修改oracle-ds.xml文件就行了
    上面的行不同你不妨试试这个,感觉你的问题不是很难
      

  3.   

    我用的C++Builder平台,帮别人调试JBuilder2005的程序(学习用)。
        因为没有用过java,临时到书店去买的书,到明天刚好2周。按照书上的例子做了一遍,jsp都出来了,但就是不能查到db server上的数据。在网上找了些资料,说做成ear包后,jndi-definitions.xml文件才能够被包进去,然后DataSource才能被找到。
        我用jbuilder2005自己成的文件,然后一个一个的检查,这才找到DataSource (应该是DataSource_31)  ejb-modeler-schema.xml 的定义。
    jbosscmp-jdbc.xml
        我重新做一遍,试试看。
    谢谢!
      

  4.   

    重新做一遍,工程s32。仍然是那个错。
    1. jbosscmp-jdbc.xml的内容。
    <jbosscmp-jdbc>
      <defaults>
        <datasource>MYSQLDS</datasource>
        <datasource-mapping>MS SQLSERVER</datasource-mapping>
      </defaults>
      <enterprise-beans>
        <entity>
          <ejb-name>Room2</ejb-name>
          <table-name>room_2</table-name>
          <cmp-field>
            <field-name>name</field-name>
            <column-name>name</column-name>
          </cmp-field>
          <cmp-field>
            <field-name>capacity</field-name>
            <column-name>capacity</column-name>
          </cmp-field>
        </entity>
      </enterprise-beans>
    </jbosscmp-jdbc>
    -------------------------------------- end: 1. jbosscmp-jdbc.xml的内容。2. 错误比较。
        上次s31的error_03:
    ----------------- error_03 begin: -----------------
    2005-07-23 08:25:55,290 ERROR [org.jboss.ejb.EntityContainer] Starting failed
    org.jboss.deployment.DeploymentException: Error: can't find data source: DataSource_s39; - nested throwable: (javax.naming.NameNotFoundException: DataSource_s39 not bound)
    ----------------- error_03 end: -----------------    这次s32的error_03:
    2005-07-23 13:13:32,411 ERROR [org.jboss.ejb.EntityContainer] Starting failed
    org.jboss.deployment.DeploymentException: Error: can't find data source: MYSQLDS; - nested throwable: (javax.naming.NameNotFoundException: MYSQLDS not bound)    其它几处也是一样,仅仅换了个名字。DataSource_s39 --> MYSQLDS
    -------------------------------------- end: 2. 错误比较。
      

  5.   

    你的mssql-ds.xml和mssql-xa-ds.xml少了点东西:
          <metadata>
             <type-mapping>MS SQLSERVER2000</type-mapping>
          </metadata>
    参考jboss根目录/docs/examples/jca 下的mssql-ds.xml和mssql-xa-ds.xml
    修改一下,jbosscmp-jdbc.xml中:
    <defaults>
        <datasource>MYSQLDS</datasource>
        <datasource-mapping>MS SQLSERVER</datasource-mapping>
    </defaults>
    改为:
    <defaults>
        <datasource>MYSQLDS</datasource>
        <datasource-mapping>MS SQLSERVER2000</datasource-mapping>
    </defaults>
      

  6.   

    查一下你的jboss启动信息吧,看看配置数据库的地方是不是报错了
    我用mysql数据库启动后会有:
    15:30:17,039 INFO  [WrapperDataSourceService] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:name=MySqlDS,service=DataSourceBinding to JNDI name 'java:MySqlDS'
    有错误的话贴上来看看
      

  7.   

    1. jboss启动log中没有error,fail有一个。
    --------------------- fail:
    2005-07-23 18:01:06,591 DEBUG [org.jboss.management.j2ee.factory.DefaultManagedObjectFactoryMap] Failed to find factory for event: javax.management.Notification[source=jboss.system:service=ServiceController,type= org.jboss.system.ServiceMBean.create,sequenceNumber=5,timeStamp=1122112866571,message=null,userData=jboss.system:type=Log4jService,service=Logging]2. jboss启动log中,MSSQLDS的最后一次出现。
    --------------------- MSSQLDS
    2005-07-23 18:01:31,687 INFO  [org.jboss.resource.connectionmanager.TxConnectionManager] Started
    2005-07-23 18:01:31,687 DEBUG [org.jboss.system.ServiceController] Starting dependent components for: jboss.jca:service=LocalTxCM,name=MSSQLDS dependent components: []3. jboss启动log中,MSSQLXADS的最后一次出现。
    --------------------- MSSQLXADS
    2005-07-23 18:01:31,707 INFO  [org.jboss.resource.connectionmanager.TxConnectionManager] Started
    2005-07-23 18:01:31,707 DEBUG [org.jboss.system.ServiceController] Starting dependent components for: jboss.jca:service=XATxCM,name=MSSQLXADS dependent components: []4. mssql2000中文版,升级了sp3。
        升级文件:chs_sql2ksp3.exe
      

  8.   

    mssql-xs-ds.xml  可以不用的;(5) jbosscmp-jdbc.xml 问题可能出在这里
    <datasource>java:/+数据源 | java:comp/+数据源</datasource> 好像只用数据源不行 记得不清楚了,只是隐约的记忆,希望能帮上忙~
      

  9.   

    重新做一遍,工程s32。仍然是那个错。
    1. jbosscmp-jdbc.xml的内容。
    <jbosscmp-jdbc>
      <defaults>
        <datasource>MYSQLDS</datasource>
        <datasource-mapping>MS SQLSERVER</datasource-mapping>
      </defaults>
      <enterprise-beans>
        <entity>
          <ejb-name>Room2</ejb-name>
          <table-name>room_2</table-name>
          <cmp-field>
            <field-name>name</field-name>
            <column-name>name</column-name>
          </cmp-field>
          <cmp-field>
            <field-name>capacity</field-name>
            <column-name>capacity</column-name>
          </cmp-field>
        </entity>
      </enterprise-beans>
    </jbosscmp-jdbc>
    -------------------------------------- end: 1. jbosscmp-jdbc.xml的内容。
    <datasource>MYSQLDS</datasource> 这个地方只用数据源是不行的;必须加上java:\ 或者 java:cmp\ 我记得我这样处理后是可以的;不过是用JBuilder9的时候了,应该本质上不会变化的。
    请这样试一下啊
      

  10.   

    采用 crazycy(代言人) 的办法,在Microsoft SQL Server 2000 Driver for JDBC中,仍然有错误。仅仅只是名字换成了java:/MYSQLDS,或者是java:cmp/MYSQLDS。
        但是,把Microsoft SQL Server 2000 Driver for JDBC改成jdbc-->odbc的桥时,用了java:/MYSQLDS后,Datasource的这个问题解决了。
        现在,还有2个问题没有解决。分别是:----------------- error_01 begin: -----------------
    2005-07-23 08:25:52,496 DEBUG [org.jboss.management.j2ee.factory.DefaultManagedObjectFactoryMap] Failed to find factory for event: javax.management.Notification[source=jboss.system:service=ServiceController,type= org.jboss.system.ServiceMBean.create,sequenceNumber=86,timeStamp=1122078352496,message=null,userData=jboss.j2ee:jndiName=Room2Remote,service=EJB]
    ----------------- error_01 end: ---------------------------------- error_02 begin: -----------------
    2005-07-23 21:33:54,691 ERROR [org.jboss.ejb.EjbModule] Initialization failed
    javax.management.InstanceAlreadyExistsException: jboss.j2ee:jndiName=Room2Remote,service=EJB already registered.
    ----------------- error_02 end: -----------------
      

  11.   

    特别声明:
        采用 crazycy(代言人) 的办法,问题没有得到解决。
        刚才是2个工程同时放在jboss中测试,而且2个ejb对象名一样。因为第2个ejb对象未能创建,故没有DataSource错误出现。
        虽然问题没有得到解决,我仍然感谢大家的帮助。谢谢!
      

  12.   

    采用 yingtju(蚂蚁) 的办法,问题没有解决。
    谢谢!
      

  13.   

    对呀,少java:/的错误我现在还常犯,都是出错后在修改xml重新部署
    你把两个工程同时部署当然不行啦,他们都会向jndi server注册信息
    当第二个ejb向jndi server注册第一个ejb已经注册的jndi名字会报
    javax.management.InstanceAlreadyExistsException: jboss.j2ee:jndiName=Room2Remote,service=EJB already registered.
    DEBUG不算错把,你在试试
    用odbc桥效率会降低啊,数据库我只用过oracle和mysql没用过sqlserver
    不知道合适的驱动版本。
      

  14.   

    回 yingtju(蚂蚁) :
        不知道问题在哪,加 java:/ 或者是 java:cmp/ 都不行。
        debug 不算错误,但是 fail 或者 error 就是错误了。
        jdbc-->odbc桥确实会降低效率,但我在记事本中编辑的java程序就可以查mssql2000的数据。走mssql driver for java效率是高,可在记事本中编辑的java程序却查不到数据,而且我也不知道需要加入哪些包。
        在jbuilder2005中,jdbc-->odbc桥、mssql driver for java 我都能够查数据,就是jboss中出问题。
        晚上00:00结贴。因为问题没有解决,所以1000分没法送出。进来回帖的都有分。
    谢谢!
      

  15.   

    问题解决了。是java:/MSSQLDS的问题,需要改2个文件,分别是jbosscmp-jdbc.xml和ejb-modeler-schema.xml 。
    1. yingtju(蚂蚁) 和 crazycy(代言人) 2人都提出了解决办法,所以2人平分赠送的1000分。
    2. hygx(寒夜孤星) 的答案正确,但是未提出解决办法,所以得10分。
    3. 赠送分数的操作未找到,请知道的给予指导。
    最后谢谢大家的帮助!