新的公司使用的是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&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也刚接触几天,希望大神们多多指点