我建了一个Odbc数据源,然后在JB8中import schema from database,
出现提示信息框:SchemaProvider.getTables() failed.

解决方案 »

  1.   

    完全可以,你可以用来连接。但是即使是ODBC,他们之间的差异还是有的。你import schema from database,实际上是在调用
    数据库中的编目信息。不是每一种数据库都有编目信息。而且编目信息不一定一样。比如ACCESS等的编目信息与ORACLE就不一样,获取编目信息就可能失败。所以你不能用向导来做。
    你可以用其他的数据库做好后,部署到你需要的数据库上。因为你开发的CMP EJB是数据库无关的。
    你可以把数据库连接改了后部署在其他的数据库。比如我的EJB是在DB2上开发的。我就可以把他部署在SQL SERVER上。
      

  2.   

    那jboss配置datasource的时候
    datasource-mapping怎么填啊???
      

  3.   

    哇~~~~~~~~,出错了:
    ------------------------------------------
    Caught an exception.java.rmi.RemoteException: EJB Exception:; nested exception is: 
    javax.ejb.EJBException: ejbCreate: [Microsoft][ODBC Microsoft Access  驱动程序] 由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。Start server side stack trace:
    java.rmi.RemoteException: EJB Exception:; nested exception is: 
    javax.ejb.EJBException: ejbCreate: [Microsoft][ODBC Microsoft Access  驱动程序] 由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。javax.ejb.EJBException: ejbCreate: [Microsoft][ODBC Microsoft Access  驱动程序] 由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。 at com.sun.ejb.bmp.SavingAccountBean.ejbCreate(SavingAccountBean.java:84) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_Impl.ejbCreate(SavingAccountBean_m3an2l_Impl.java:182) at java.lang.reflect.Method.invoke(Native Method) at weblogic.ejb20.manager.DBManager.create(DBManager.java:888) at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:858) at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:244) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_HomeImpl.create(SavingAccountBean_m3an2l_HomeImpl.java:80) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_HomeImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:114) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)End  server side stack trace
    ; nested exception is: 
    javax.ejb.EJBException: ejbCreate: [Microsoft][ODBC Microsoft Access  驱动程序] 由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。Start server side stack trace:
    javax.ejb.EJBException: ejbCreate: [Microsoft][ODBC Microsoft Access  驱动程序] 由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。 at com.sun.ejb.bmp.SavingAccountBean.ejbCreate(SavingAccountBean.java:84) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_Impl.ejbCreate(SavingAccountBean_m3an2l_Impl.java:182) at java.lang.reflect.Method.invoke(Native Method) at weblogic.ejb20.manager.DBManager.create(DBManager.java:888) at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:858) at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:244) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_HomeImpl.create(SavingAccountBean_m3an2l_HomeImpl.java:80) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_HomeImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:114) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)End  server side stack trace
    javax.ejb.EJBException: ejbCreate: [Microsoft][ODBC Microsoft Access  驱动程序] 由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。Start server side stack trace:
    javax.ejb.EJBException: ejbCreate: [Microsoft][ODBC Microsoft Access  驱动程序] 由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。 at com.sun.ejb.bmp.SavingAccountBean.ejbCreate(SavingAccountBean.java:84) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_Impl.ejbCreate(SavingAccountBean_m3an2l_Impl.java:182) at java.lang.reflect.Method.invoke(Native Method) at weblogic.ejb20.manager.DBManager.create(DBManager.java:888) at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:858) at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:244) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_HomeImpl.create(SavingAccountBean_m3an2l_HomeImpl.java:80) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_HomeImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:114) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)End  server side stack trace
    <<no stack trace available>>
      

  4.   

    Caught an exception.java.rmi.RemoteException: Exception in ejbLoad:; nested exception is: 
    javax.ejb.EJBException: ejbLoad: The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction.Start server side stack trace:
    java.rmi.RemoteException: Exception in ejbLoad:; nested exception is: 
    javax.ejb.EJBException: ejbLoad: The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction.javax.ejb.EJBException: ejbLoad: The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction. at com.sun.ejb.bmp.SavingAccountBean.ejbLoad(SavingAccountBean.java:158) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_Impl.ejbLoad(SavingAccountBean_m3an2l_Impl.java:123) at weblogic.ejb20.manager.DBManager.loadBean(DBManager.java:446) at weblogic.ejb20.manager.DBManager.enrollInTransaction(DBManager.java:345) at weblogic.ejb20.cache.EntityCache.makeReady(EntityCache.java:290) at weblogic.ejb20.cache.EntityCache.doGet(EntityCache.java:176) at weblogic.ejb20.cache.EntityCache.get(EntityCache.java:125) at weblogic.ejb20.manager.DBManager.getReadyBean(DBManager.java:249) at weblogic.ejb20.manager.DBManager.preInvoke(DBManager.java:228) at weblogic.ejb20.internal.BaseEJBObject.preInvoke(BaseEJBObject.java:127) at weblogic.ejb20.internal.EntityEJBObject.preInvoke(EntityEJBObject.java:87) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_EOImpl.credit(SavingAccountBean_m3an2l_EOImpl.java:235) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:87) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)End  server side stack trace
    ; nested exception is: 
    javax.ejb.EJBException: ejbLoad: The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction.Start server side stack trace:
    javax.ejb.EJBException: ejbLoad: The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction. at com.sun.ejb.bmp.SavingAccountBean.ejbLoad(SavingAccountBean.java:158) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_Impl.ejbLoad(SavingAccountBean_m3an2l_Impl.java:123) at weblogic.ejb20.manager.DBManager.loadBean(DBManager.java:446) at weblogic.ejb20.manager.DBManager.enrollInTransaction(DBManager.java:345) at weblogic.ejb20.cache.EntityCache.makeReady(EntityCache.java:290) at weblogic.ejb20.cache.EntityCache.doGet(EntityCache.java:176) at weblogic.ejb20.cache.EntityCache.get(EntityCache.java:125) at weblogic.ejb20.manager.DBManager.getReadyBean(DBManager.java:249) at weblogic.ejb20.manager.DBManager.preInvoke(DBManager.java:228) at weblogic.ejb20.internal.BaseEJBObject.preInvoke(BaseEJBObject.java:127) at weblogic.ejb20.internal.EntityEJBObject.preInvoke(EntityEJBObject.java:87) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_EOImpl.credit(SavingAccountBean_m3an2l_EOImpl.java:235) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:87) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)End  server side stack trace
    javax.ejb.EJBException: ejbLoad: The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction.Start server side stack trace:
    javax.ejb.EJBException: ejbLoad: The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction. at com.sun.ejb.bmp.SavingAccountBean.ejbLoad(SavingAccountBean.java:158) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_Impl.ejbLoad(SavingAccountBean_m3an2l_Impl.java:123) at weblogic.ejb20.manager.DBManager.loadBean(DBManager.java:446) at weblogic.ejb20.manager.DBManager.enrollInTransaction(DBManager.java:345) at weblogic.ejb20.cache.EntityCache.makeReady(EntityCache.java:290) at weblogic.ejb20.cache.EntityCache.doGet(EntityCache.java:176) at weblogic.ejb20.cache.EntityCache.get(EntityCache.java:125) at weblogic.ejb20.manager.DBManager.getReadyBean(DBManager.java:249) at weblogic.ejb20.manager.DBManager.preInvoke(DBManager.java:228) at weblogic.ejb20.internal.BaseEJBObject.preInvoke(BaseEJBObject.java:127) at weblogic.ejb20.internal.EntityEJBObject.preInvoke(EntityEJBObject.java:87) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_EOImpl.credit(SavingAccountBean_m3an2l_EOImpl.java:235) at com.sun.ejb.bmp.SavingAccountBean_m3an2l_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:87) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)End  server side stack trace
    <<no stack trace available>>