2017-06-27 12 views
0

受信メッセージを受信し、JPA(eclipseLink)を使用してSLSB経由で永続化するようにMDBを構成しました。データベース挿入は1つのオフメッセージに対して機能しますが、負荷条件(1秒あたり3または4メッセージ)で、データはDBに保存されません。私はsqlを見ることができますログにDB内のデータがないクエリを挿入します。 パーシスタンスファイル:MDBがSQL Serverのデータを永続化しない

<?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> 

答えて

0

MDBのEJB2スタイル設定に切り替えます。
根本原因: EJB3スタイルのMDBのメソッドは、CDI注入によってラップされます。 スタックトレースのラッパークラスの1つがcom.oracle.pitchfork.intercept.MethodInvocationInvocationContext weblogicのスプリングフレームワークモジュールjarにあります。 MethodInvocationInvocationContextは、 "java:comp/WebServiceContext"のJNDIツリーでWebServiceContextを探します。 jax-wsサービスでWebServiceContextを "java:comp/WebServiceContext"に設定する WebServiceContextが存在する場合、MethodInvocationInvocationContextはMessageDrivenContextの値にアクセスしようとします 仕様では、WebServiceContextがWebServiceContextの外部にアクセスされるとIllegalStateExceptionをスローする必要があります。 Webサービスコール

関連する問題