問題タブ [transactionmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - ハイバネート トランザクション マネージャー
spring と hibernate を使用して jboss env に Web アプリをデプロイしました。問題は、ログに次のメッセージが表示され続けることです。
私はそれについて心配する必要がありますか?すべてのデータは db (oracle) に正しく保存されており、すべて正常に動作しているようです。
これは私の構成です(db関連):
--> --> -->
前もって感謝します。
spring - Spring Framework 3、休止状態、および websphere トランザクション マネージャーを使用した遅延例外
Spring フレームワークを Spring 3.1.1 にアップグレードしたばかりで、websphere トランザクション マネージャーを使用しています。lazy として宣言されているモデルにアクセスしようとしたときに、次のエラーが発生しました。
[1/15/13 14:30:46:148 WIT] 00000021 LazyInitializ E org.hibernate.LazyInitializationException はプロキシを初期化できませんでした - セッションがありません org.hibernate.LazyInitializationException: プロキシを初期化できませんでした - org.hibernate.proxy でセッションがありません。 AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57) で org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111) で org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150) で com .aprisma.product.gcm.common.model.spi.gie.Menu$$EnhancerByCGLIB$$ebdf1c09.getName() at com.aprisma.product.gcm.service.integration.impl.SecurityServiceImpl.getMenuTree(SecurityServiceImpl.java:312) ) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) で java.lang.reflect.Method.invoke(Method.java:599) で org.springframework.aop.support .AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) org.springframework.transaction.interceptor.TransactionInterceptor$1.doInTransaction(TransactionInterceptor.java:132) at org.springframework.transaction.jta.WebSphereUowTransactionManager$UOWActionAdapter.run(WebSphereUowTransactionManager.java:337) at com.ibm.ws.uow.UOWManagerImpl .runUnderNewUOW(UOWManagerImpl.java:1067) com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:628) org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:281) org.springframework .transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:127) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java) :202) $Proxy1104.getMenuTree(Unknown Source) at com.aprisma.product.gcm.service.impl.LoginServiceImpl.getMenuTree(LoginServiceImpl.java:279) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun. Reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) で java.lang.reflect.Method.invoke(Method.java:599) で org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils .java:318) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) で org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) で org.springframework.transaction. Interceptor.TransactionInterceptor$1.doInTransaction(TransactionInterceptor.java:132) org.springframework.transaction.jta.WebSphereUowTransactionManager$UOWActionAdapter.run(WebSphereUowTransactionManager.java:337) com.ibm.ws.uow.UOWManagerImpl.runUnderNewUOW(UOWManagerImpl.java) :1067) com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:628) で org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:281) で org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java: 127) $Proxy1335.getMenuTree(Unknown Source) でsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45) で、sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) で java.lang.reflect.Method で。呼び出し(メソッド.java:599) com.aprisma.component.esm.utils.CallUtils.springCall1(CallUtils.java:452) com.aprisma.component.esm.utils.CallUtils.springCall2(CallUtils.java:465) com.aprisma.component .esm.utils.CallUtils.springCall(CallUtils.java:413) com.aprisma.component.esm.utils.CallUtils.call(CallUtils.java:777) com.aprisma.component.esm.delegate.BusinessObjectFactory.callBusinessObject (BusinessObjectFactory.java:275) com.aprisma.component.web2.service.CallBOService.callService(CallBOService.java:9) com.aprisma.product.gcm.retail.web.mvc.AbstractController.callService(AbstractController.java) :45) com.aprisma.product.gcm.retail.web.mvc.customer.LoginController.prepareMenuList(LoginController.java:376) で com.aprisma.product.gcm.retail.web.mvc.customer.LoginController.login で(LoginController.java:215) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)で、sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)で、sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)で、java.lang.reflectで.Method.invoke(Method.java:599) の org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) の org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod (AnnotationMethodHandlerAdapter.java:436) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) で org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) でcom.aprisma.component.web2.org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) の servlet.CustomDispatcherServlet.doDispatch(CustomDispatcherServlet.java:17) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) のorg.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) で javax.servlet.http.HttpServlet.service(HttpServlet.java:738) で javax.servlet.http.HttpServlet.service(HttpServlet.java) :831) com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657) で com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597) で com.ibm. com.aprisma.component.web.filters.UserContextFilter の ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)。doFilterInternal(UserContextFilter.java) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188) com.ibm .ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116) com.aprisma.component.web.filters.InputSanitationFilter.doFilter(InputSanitationFilter.java) com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter で(FilterInstanceWrapper.java:188) com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116) com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77) com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) com.ibm.ws.com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502) の webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934) com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest( ServletWrapperImpl.java:179) com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91) com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864) com.ibm .ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186) at com.ibm.ws.http.channel.inbound.impl .HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83) com. com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:607) の com.ibm.ws の ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:557)。 tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:984) at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1069) at com.ibm.ws.util. ThreadPool$Worker.run(ThreadPool.java:1604)impl.WorkQueueManager.requestComplete(WorkQueueManager.java:557) の com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:607) の com.ibm.ws.tcp.channel.impl.WorkQueueManager. com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1069) の workerRun(WorkQueueManager.java:984) com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.ジャワ:1604)impl.WorkQueueManager.requestComplete(WorkQueueManager.java:557) の com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:607) の com.ibm.ws.tcp.channel.impl.WorkQueueManager. com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1069) の workerRun(WorkQueueManager.java:984) com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.ジャワ:1604)
この問題は、websphere トランザクション マネージャーを使用している場合にのみ発生しました。weblogic トランザクション マネージャーを使用している場合は問題なく動作します。同じ問題を検索しようとしましたが、誰も私と同じ問題を抱えていないようです。それで、誰かが同じ問題に直面したことがあるかどうか尋ねたいですか?これに対する解決策はありますか?
ありがとう、ロビン
spring - Spring Data JPA、Hibernate、および複数のトランザクションマネージャーの操作:「transactionManager」という名前の Bean が定義されていません
編集:この問題に興味がある人は誰でも、問題の分析と関連する解決策を質問の最後に提供します。
Spring 3.2、Hibernate 4.1、Spring Data JPA 1.3、および Apache CXF 2.5 (特に JAX-RS モジュール) を使用している Web アプリケーションのモジュールを構成しています。私は次の構成を持っています(これは完全に正常に機能していますが、簡潔にするために詳細は省略されています):
私の問題は、独自の を定義するいくつかの外部モジュールに依存する必要があることですPlatformTransactionManager
。そのため、同時により多くのトランザクション マネージャーを使用していることに気付きます。この問題はTransactional.html#value()によって簡単に対処できるため、使用する必要がある場所では常に、@Transactional
そのトランザクションに使用する必要があるトランザクション マネージャーの名前でアノテーションを修飾しました。
外部モジュールの標準を満たすために、モジュールで定義するトランザクション マネージャーの名前をより意味のある名前に変更したいと考えています。したがって、たとえば、そのマネージャーを次のようにexternalModule1
定義します。externalModule1TransactionManager
残念ながら、この変更を行うと、これは非常に簡単に思えます (それに@Transactional#value()
応じて の使用法を変更すると、例外が発生します。
特に注目したいのは、
と
彼らのコードは次のようになります
と
したがって、私の理解では、この構成は機能するはずですが、なぜその例外がスローされるのですか? 標準の名前付きトランザクション マネージャーは必要ですか? それとも cxf のせいでしょうか?同じアプリケーション ( example 1、example2 )内の複数のトランザクション マネージャーに関連するいくつかの質問を見つけましたが、それらの質問で受け入れられた回答が私の解決策につながります。私は何を誤解し、間違っていますか?
この長い質問をここまで読んでくれてありがとう!
Michail の回答に基づいて完全な説明を提供するために編集します。Spring Data JPAを使用すると、データベースに接続するためのリポジトリ インターフェイスを定義する必要があります。someOtherMethod
実際、次のように定義されている私のリポジトリの1つを呼び出しています:
これも問題ないように見えますが、JpaRepository
実装のソース コードを見ると (したがって、org.springframework.data.jpa.repository.support.SimpleJpaRepository
(save
他の更新メソッドと同様に) に@Transactional
. という注釈が付けられていることがわかりました。SimpleJpaRepository
したがって、Spring Data JPA を使用する場合、デフォルトのトランザクション マネージャー ( という名前のものtransactionManager
) は必須です。私の目標には悪いですが、少なくともこれで終わりだとわかりました!
spring - HibernateTransactionManager のセーブポイント
名前 A と B の 2 つの Insert ステートメントのセットがあります。例外がなければ、A と B の両方がコミットされます。B への挿入中に何らかの例外が発生した場合は、A のみをコミットする必要があります。この目的のために HibernateTransactionManager を使用しました。
rollbackToSavepoint(Object savePoint)
TransactionStatus で利用可能なメソッドを使用しました。Bに例外がある場合、記載されているようにロールバックしません。rollbackToSavepoint()
メソッドを使用するときにロールバックする必要がある場合でも、例外が発生する前に実行されるすべてのクエリをコミットします。
私は休止状態が初めてです。
java - Springサービスクラスの2番目のメソッドでpropagation=Propagation.REQUIRES_NEWの場合でも、トランザクションがロールバックされるのはなぜですか?
基本設定はすべて問題なく、トランザクションを試し始めました。Struts + Spring+Hibernateアノテーショントランザクションマネージャー。これはアクションのサンプルコードであり、サービスクラスを呼び出します。
サービスクラスのaddUser()
メソッドは次のとおりです。
まず、addUser
userDaoを呼び出しました。これにより、ユーザーが挿入されます。次に、addUser2
このサービスクラスの別のメソッドを呼び出しました。
そして、これはヌルPKのために失敗します。2番目の呼び出し(addUser2
)は失敗すると思いますが、前の呼び出しには影響しません。ただし、ユーザーは挿入されません。
電話するだけの場合:
それは機能しています。つまり、データベースなどの基本設定は間違っていません。
何か案が?
spring - Mule 3.3 spring 3.1 hibernate 3.6 トランザクション管理
ラバ、春、注釈付きの休止状態を含むアプリケーションに取り組んでいます。私は org.springframework.orm.hibernate3.HibernateTransactionManager を使用しています。今問題は次のとおりです。
休止状態を使用して条件に基づいてデータをデータベースに記録する特定のコンポーネントがミュールにあります。メソッドのスコープが完了すると、いくつかのデータを挿入し、トランザクションをコミットする @Transactional を使用しました。しかし、私が望む動作は次のとおりです。最初のコンポーネントは何らかの条件に基づいてデータを挿入しますが、トランザクションはすぐにコミットされるべきではありません.Javaクラスである私の2番目のコンポーネントは、コンポーネントのいずれかがすべて失敗した場合、3番目などのデータを再度挿入する必要があります.すべてのコンポーネントで実行されたクエリをロールバックする必要があります。このコンポーネントはすべて別個の Java クラスです
どうすればそのような行動を達成できますか。
ありがとうございました、
java - Hibernate Spring に TransactionManager を追加する
Transaction-Manager の追加時にエラーが発生しました。どうしたの?:/ 考えられる答えはほとんどありませんが、いくつかの休止状態のライブラリがないことを示しています。しかし、それらはすべて持続しているようです。これを克服する方法は?また、データベースにいくつかのテスト データを追加したいと考えています。どのクラスに挿入するのが良いですか?ありがとうございました。
エラー:
ディスパッチャーサーブレット:
ダオ:
サービス:
コントローラ:
次の エラーを取得する aopalliance-1.0.jar を追加した後:
<aop:aspectj-autoproxy proxy-target-class="true"/>
解決策の 1 つは、dispatcher-servletに追加することでした。次のエラー:
spring - Spring Transaction Manager: ロールバックが機能しない
エラーが発生した場合にすべての挿入がロールバックされるトランザクション ブロック内でいくつかの挿入クエリを実行したいと考えています。
MySQL
これには、データベースとSpring TransactionManagerを使用しています。テーブルタイプもInnoDB
ここに記載されている手順に従って、構成を完了しました。
以下は私のコードです(今のところクエリは1つだけです)
春の設定xml:
データソース構成:
このコードは問題なく機能し、レコードが挿入されます。しかし、ロールバックは機能しません!エラーなしでロールバックステートメントを実行しますが、効果はありません。
誰かが私がどこで間違っているのか教えてもらえますか?
java - WebSphere 8.0 で TransactionManager を取得するにはどうすればよいですか?
@PostConstruct メソッドでデータベースにアクセスする必要があるため、トランザクションのスコープを制御するために @Singleton SessionBean - EJB 3.1 - で TransactionManager を取得しようとしました。例外が発生した場合、コンテナーは TransactionRolledbackException: setRollbackOnly をシングルトン ポスト コンストラクト メソッド内からスローするため、RollBack を許可できません。
私は JTA DataSource を使用しており、トランザクションの制御をオーバーライドするために @TransactionManagement(TransactionManagementType.BEAN) を定義しています。
@Resource プライベート TransactionManager transactionManager;
「transactionManager.begin();」を実行しようとすると、NullPointerException が返されます。誰もこれを解決する方法を知っていますか?
アップデート:
私が使用しているコードはこれです:
@Resource アノテーションに追加する JNDI アドレスが必要だと思います。これは、WebSphere に固有のものですが、実際には見つかりません。
アップデート:
コンテナ管理のインジェクションで JNDI を使用する理由 ダイレクトインジェクションでヌルポインタ例外が出てしまうので、ex.のように使ってみました。OReilly Enterprise Java Beans 3.1 第 6 版の 305 ページ。
これを試してみましたが成功しませんでした。
アップデート
WebSphere は私たちの Bean アノテーションを取得していません - 理由を本当に知ることはできません - したがって、アノテーション:
動作していませんでした。そのため、de ejb-jar.xml を編集し、次のコードを追加しました。
そして UserTransaction が機能しました。答えてくれてありがとう。