你可以检查一下ICommonEao 这个EJB里的save方法,如果事务传播属性为Required,或者Supports时才可被回滚。其他属性不回滚是正确的。
解决方案 »
- struts中的ajax
- springMVC上传中文文件 文件名乱码
- drools的workingmemory 使用完如何释放
- <%@ taglib uri = "http://java.sun.com/jstl/core" prefix="c" %> 出错
- EJB3.0开发问题
- 请问ECLIPSE和CVS的配置问题,最好能给个文档谢谢了!!!
- 菜鸟学j2ee希望大家帮忙啊!!
- 自定义标记库如何支持EL?
- 为什么Home接口为什么只有一个create方法?
- JSF2.2表单汉字乱码问题
- GSM短信猫如何配置连接oracle数据库?
- java.util.Matcher.matchers返回的值是什么
@Stateless(name = "common_EaoBean")
@Local
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class CommonEaoImpl implements ICommonEao { @PersistenceContext(unitName = "CollegePlatformSecurityEntity")
private EntityManager em;
这是我commoneao的部分代码,这里也声明了
private ICommonEao commonEao;@Stateless(name = "common_EaoBean")
@Local
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class CommonEaoImpl implements ICommonEao {注解用的少,代码看着挺疑惑的你确定调用的是CommonEaoImpl么?这个看这个好像是Local,而上面那个配置的貌似是想调Remote接口??
依然无效。
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="CollegePlatformSecurityEntity" transaction-type="JTA">
<jta-data-source>java:/MyOracleDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>这是我的persistence.xml
我试过把commoneao部署在远程和本地
所以remote和local我都改过,依然无效。
另外,部署在远程server实例时应该还需要指定server实例的ip和端口(也就是说一般应该通过lookup),看你例子上直接通过注入的方式,应该用的还是部署在本server实例中的EJB。我上面的表述可能有不清楚的地方,解释一下:
CommonEaoImpl 类中标注的name是common_EaoBean:
@Stateless(name = "common_EaoBean")调用的时候用的mappedName是common_EaoBean/remote,
@Resource(mappedName = "common_EaoBean/remote")
private ICommonEao commonEao;name和mappedName虽然是不一样的概念,但是下面对commonEao的调用是否就是用的上面那个ejb(common_EaoBean)呢?也就是说是否有可能调用到其他ejb上去了?我觉得应该检查一下。其他倒是没看出啥问题来~
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MyOracleDS</jndi-name>
<connection-url>jdbc:oracle:thin:@192.168.24.249:1521:ORCL</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>gxpt1</user-name>
<password>gxpt1</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource></datasources>