MDB不在SQL Server中持久保存数据

时间:2017-06-27 12:59:35

标签: sql-server jpa weblogic12c

我将MDB配置为接收传入消息,并使用JPA(eclipseLink)通过SLSB保留它。数据库插入一次性消息但在负载条件下(每秒3或4条消息),数据不会保留在DB中。我可以看到sql在日志中插入查询但在DB中没有数据。 持久性文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    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_2_0.xsd">
    <!-- <persistence-unit name="mainPU" transaction-type="JTA"> -->
    <persistence-unit name="mainPU" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>ecpcPool</jta-data-source>
        <class>com.fc.ECP.domain.Address</class>
        <class>com.fc.ECP.domain.Customer</class>
        <class>com.fc.ECP.domain.DocumentationSignature</class>
        <class>com.fc.ECP.domain.EcpSystem</class>
        <class>com.fc.ECP.domain.EcpTransaction</class>
        <class>com.fc.ECP.domain.EcpWkflw</class>
        <class>com.fc.ECP.domain.EidVerify</class>
        <class>com.fc.ECP.domain.EsignDetail</class>
        <class>com.fc.ECP.domain.Finpln</class>
        <class>com.fc.ECP.domain.FinplnDocumentation</class>
        <class>com.fc.ECP.domain.ThirdPartyCrdntl</class>
        <class>com.fc.ECP.domain.ThirdPartyDocumentation</class>
        <class>com.fc.ECP.domain.TransactionType</class>
        <class>com.fc.ECP.domain.Advice</class>
        <class>com.fc.ECP.domain.Advcln</class>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <shared-cache-mode>NONE</shared-cache-mode>
        <properties>
            <property name="eclipselink.target-server" value="WebLogic_10" 
/>
            <property name="javax.persistence.jtaDataSource" 
value="ecpcPool" />
            <!-- <property name="javax.persistence.jtaDataSource" 
value="jdbc/MicrosoftSQLServer"/> -->
            <!-- <property name="javax.persistence.jtaDataSource" 
value="ecp_prx_ds"/> -->
            <property name="eclipselink.target-database"

value="org.eclipse.persistence.platform.database.SQLServerPlatform" />
            <property name="eclipselink.session.customizer" 
value="com.fc.adr.jpa.JPASessionCustomizer" />
            <property name="com.fc.adr.jpa.schema" value="$(mainPU.schema)" 
/>
            <property name="com.fc.adr.jpa.schema.sequences" 
value="$(mainPU.schema.sequences)" />
            <property name="eclipselink.logging.logger" 
value="DefaultLogger" />
            <property name="eclipselink.logging.level.sql" value="FINE" />
            <property name="eclipselink.logging.level" value="FINE" />
            <property name="eclipselink.logging.parameters" value="true" />
            <property name="eclipselink.persistence-context.flush-mode" 
value="commit" />
        </properties>
    </persistence-unit>
</persistence>

1 个答案:

答案 0 :(得分:0)

切换到MDB的EJB2样式配置 基本原因: EJB3样式的MDB方法由CDI注入包装。  堆栈跟踪中的一个包装类是:com.oracle.pitchfork.intercept.MethodInvocationInvocationContext 这是在weblogic中的spring框架模块jar中  MethodInvocationInvocationContext在“java:comp / WebServiceContext”的JNDI树中查找WebServiceContext 拥有jax-ws服务会将WebServiceContext放在“java:comp / WebServiceContext”中 如果存在WebServiceContext,则MethodInvocationInvocationContext尝试访问MessageDrivenContext的值 规范要求WebServiceContext在Web服务调用之外访问时抛出IllegalStateException