倒。
部署的时候推荐不要使用ide工具。
实际在打包的时候我们都是用ant的。
ide工具完成了很多内容,但你并不是很清楚。struts+ejb的项目我做过几个。我们自己写所有的配置文件,不需要ejb-modeler-schema.xml文件。
我们的ejb写的时候同时写weblogic,jboss,websphere的配置文件。
在ant文件下增加一个部署的target就ok了。
你那个ejb-modeler-schema.xml文件用来干什么的?完成了什么工作?你要自己看看!ejb的所有配置文件的每一个字符你都应该清楚他干什么的,否则你永远都无法提高。
建议你目前状态采用vi,或editplus完成所有的ejb工作,对你的提高应该有帮助。再这:你那个ejb-modeler-schema.xml的的dtd文件是哪里?还是standalone?
要是可能,把ejb-modeler-schema.xml文件贴上来看看

解决方案 »

  1.   

    实际开发的采用的办法是这样的。
    将数据源定义为一个env-entry,
    每个ejb的cmp配置文件都采用的是env-entry。
    这样即使在跨平台,跨机器的时候只需要修改env-entry的映射。
    而不是去修改每个cmp的文件~~我估计你们的配置文件开始就没有搞好,所以导致了现在的问题。
      

  2.   

    谢谢kongyeeku(李别) 和 Maple99(Maple)!
    我们的项目采用的就是struts+ejb(cmp)的架构,
    在创建ejb时,设置好数据源等信息后,ejb的部署描述符是由JBuilderX生成的,
    每个ejb模块下对应5个xml文件:1。ejb-jar.xml
    2。ejb-modeler-layout.xml
    3。ejb-modeler-schema.xml
    4。weblogic-cmp-rdbms-jar.xml
    5。weblogic-ejb-jar.xml其中,文件“ejb-modeler-schema.xml”里记录的是关于数据库和每个表(表名,字段名,字段类型等)的信息,节选如下:===================================================
    <?xml version="1.0" encoding="UTF-8"?><schema-root-node name="DataSources" node-type="0" status="0">  <schema-connection-node name="UMeShop" node-type="4" status="0" catalog="null-object" connection-type="1" data-source-name="jdbc:microsoft:sqlserver://172.16.1.100:1433;DatabaseName=UMeShop;SelectMethod=cursor" driver="com.microsoft.jdbc.sqlserver.SQLServerDriver" file="null-object" password="sa" sql-schema="null-object" url="jdbc:microsoft:sqlserver://172.16.1.100:1433;DatabaseName=UMeShop;SelectMethod=cursor" use-data-source="true" username="sa" all-schemas="true" all-views="true">
        
        <schema-table-node name="tUMSCity" node-type="1" status="0" catalog="null-object" ref="false null com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:microsoft:sqlserver://172.16.1.100:1433;DatabaseName=UMeShop;SelectMethod=cursor" sql-schema="dbo">
        
          <schema-column-node name="nCityID" node-type="2" status="0" col-default="null-object" is-nullable="NO " java-sql-type="2" ordinal="1" precision="28" scale="30" vendor-type-name="numeric() identity" is-primary-key="true" />
          
          <schema-column-node name="nProvinceID" node-type="2" status="0" col-default="null-object" is-nullable="NO " java-sql-type="2" ordinal="2" precision="28" scale="30" vendor-type-name="numeric" is-primary-key="false" />
          
          <schema-column-node name="sCityEName" node-type="2" status="0" col-default="null-object" is-nullable="YES" java-sql-type="12" ordinal="4" precision="80" scale="-1" vendor-type-name="varchar" is-primary-key="false" />
          
          <schema-column-node name="sCityName" node-type="2" status="0" col-default="null-object" is-nullable="NO " java-sql-type="12" ordinal="3" precision="80" scale="-1" vendor-type-name="varchar" is-primary-key="false" />
          
        </schema-table-node>
        
      </schema-connection-node>
      
    </schema-root-node>
    ===================================================每个表对应一个:<schema-table-node>
    ...
    ...
    ...
    </schema-table-node>我这里只选了一个表贴在这里:
    表名:tUMSCity
    包含4个字段:nCityID,nProvinceID,sCityEName,sCityName。
    kongyeeku(李别),你说“我估计你们的配置文件开始就没有搞好,所以导致了现在的问题”,是的,开始我们没有意识到这是一个问题,把它都交给JBuilderX去处理了:(不过,到了现在这个地步,如果按照你所说的“我们的ejb写的时候同时写weblogic,jboss,websphere的配置文件”去做,
    是不是改动面太大?有没有针对我们现有情况的比较好的解决办法??3Q
      

  3.   

    cmp的ejb必须的配置文件是三个
    1。ejb-jar.xml
    2。weblogic-cmp-rdbms-jar.xml
    3。weblogic-ejb-jar.xml
    采用你们的文件配置方式肯定会引发一系列的问题。
    我看了你的配置文件,ejb-modeler-schema.xml文件中配置了表的映射,那weblogic-cmp-rdbms-jar.xml文件中在干什么?
    我们的cmp,cmr字段的映射是在weblogic-cmp-rdbms-jar.xml文件中完成的。而且,我想你们可能是第一次开发这种项目。每个ejb对应一个jar文件这是不可能的!对于真正的引用,因为表之间的关系必须在ejb-jar.xml中完成定义,你们的表之间难道没有关系吗?如果有关系,但你没有定义,最终会导致系统的数据不完整等一系列问题。基本上,我现在想不出只需要改动很少地方就可以解决你的问题。
    如果你们只是需要完成weblogic下的配置,其实很快。不需要写jboss,websphere的配置文件。
    熟练的话,最多一天时间可以把12个EJB的配置文件全部搞定。建议做ejb之前,先做好数据字典!EJB之间的关系至少有个简单的uml类图。
    也就是必须先把ejb之间的关系理顺,然后再去写配置文件。顺便问一下?你真是在公司开发吗?你们公司敢把一个项目拿来这么整?真让人狂ft~~
      

  4.   

    建议:
    所有的entityEJB做在一个jar文件里。
    至少是有关系的entityEJB必须做在一个JAR文件。
    MDB和SessionEJB做在一个JAR文件。
      

  5.   

    感谢 kongyeeku(李别) !问题终于解决了,把所有的“ejb-modeler-schema.xml”(总共12个)删除掉,重新编译部署,OK。这样,换一台数据库服务器只需在WebLogic控制台修改数据源信息即可(但数据源名称不变)。weblogic-cmp-rdbms-jar.xml文件里描述的是对象关系映射(实体Bean和表的映射。另外,里面还有数据源名称,但是却没有“jdbc:microsoft:sqlserver://172.16.1.100:1433;DatabaseName=UMeShop”这样的数据库地址。很好,解耦了),这样看来,文件“ejb-modeler-schema.xml”显得多余而“有害”了。不好意思,我昨天说错了一点,其实我们不是把“每个ejb对应一个jar文件”,
    而是把有关系的实体Bean放在一个jar文件里(总共好几十个数据库表,12个jar文件)。呵呵,我是在公司开发。我们公司是青岛的一个大集团旗下的一个比较大的软件公司(也涉及到一些硬件开发),主要是做智能交通产品、商业流通软件(C/S模式)、车载系统(电子方面的)。我们java组成立不久,才几个人。惭愧!3Q
      

  6.   

    建议把文件ejb-modeler-layout.xml也删除
    这也是不需要的。
    至少在EJB2.0我可以保证是没有必要使用。EJB3.0我就不是很清楚了……
      

  7.   

    请问楼上的,jboss下cmp的必须配置文件有那些,是下面三个吗?
    1.ejb-jar.xml
    2.jboss.xml
    3.jbosscmp-jdbc.xml另外:%JBOSS_HOME%\server\default\conf\下的文件
      standardjbosscmp-jdbc.xml
      standardjaws.xml
    需要配制吗?