第一次使用ejb

来源:互联网 发布:马尔可夫矩阵怎么算 编辑:程序博客网 时间:2024/05/20 12:50

新的公司使用的是ejb+strut2,JBoss服务器,但开发的是写的只是逻辑代码抓狂,根本碰不到技术层面的东西,所以就自己试了一下。。。结果相当悲剧,在这里记录下报的错误,为以后提个醒

(1)xxx(dataSource) not bound:

原因:未设置数据源,在ejb端的META-INF下的persistence.xml中的
<persistence-unit name="ejb_01" transaction-type="JTA">
          <jta-data-source>java:/myData</jta-data-source>
          
          <properties>
              <!-- 调整jbdc抓取数量的大小 -->
              <property name="hibernate.jdbc.fetch_size" value="18"/>
              <!-- 显示最终执行的sql -->
              <property name="hibernate.show_sql" value="true"/>
              <!-- jdbc批量更新数量 -->
              <property name="hibernate.jdbc.batch_size" value="10"/>
              <!-- 格式化显示的sql -->
              <property name="hibernate.format_sql" value="true"/>
              <!-- 数据库方言 -->
              <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
          </properties>
    </persistence-unit>

myData这个东西没有找到

解决方法:在jBOSS下的%JBOSS_HOME%/serrver/default/deploy下创建xxx(使用的数据库名字)-ds.xml:

<datasources>
    <local-tx-datasource>
        <jndi-name>myData</jndi-name>
        <connection-url>
            jdbc:mysql://localhost:3306/world?useUnicode=true&amp;characterEncoding=utf-8
        </connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>root</user-name>
        <password>1234</password>
        <!--最小连接数-->
        <min-pool-size>3</min-pool-size>
        <!--最大连接数-->
        <max-pool-size>32</max-pool-size>
        <!--抛出异常前最大的等待连接时间-->
        <blocking-timeout-millis>30000</blocking-timeout-millis>
        <!--关闭连接前连接空闲的最大时间-->
        <idel-timeout-minutes>5</idel-timeout-minutes>
            
        <metadata>
            <type-mapping>mySQL</type-mapping>
        </metadata>
    </local-tx-datasource>

这这里点需要 (a):xxx.ds.xml编写后的编码,默认为ISO-8859-1,,需要在editplus等编辑器中将其修改为utf-8,否则会报:Invalid 2 byte of 2-byte sequence

(b)该文件中的数据库方言为必填项

(2)数据库的驱动jar包

放在server/lib/defalut中

(3)xxx(ejbBean) not bound

在local连接ejb是时 initialContext.lookup()中的参数为(ejb与web整合项目名)/ejb 中的实现类名/local

 运行项目 ok

第一次写一些总结,对ejb也刚接触几天,希望大神们多多指点奋斗

0 0