2

Liferayフォーラムからコピーしています-2週間で回答が得られませんでした。 http://www.liferay.com/community/forums/-/message_boards/message/9384663

ドキュメント/ブログのLiferayトランザクションの方法を探しています。

Liferay 6.0.6 PostgreSQL

私はjax-wsWebサービスに接続しています。私はLiferayサービスのみを使用しています。

例:ドキュメントを挿入してタグを付ける

fileEntry = DLFileEntryServiceUtil.addFileEntry(groupId, folderId, filename, filename, description, changeLog, "extraSettings", buffer, serviceContext);
AssetEntry assetEntry = AssetEntryLocalServiceUtil.getEntry(DLFileEntry.class.getName(), fileEntry.getFolderId());
AssetTagUtil.addAssetEntry(assetTagObj.getPrimaryKey(), assetEntry.getPrimaryKey());

トランザクションを設定する必要があります。

私のクラスの注釈

@MTOM
@WebService(targetNamespace="http://services.portal.xyz/",serviceName="AuditResultService",name = "AuditResult", endpointInterface = "xyz.portal.services.AuditResultWS")
@Transactional(isolation = Isolation.DEFAULT, readOnly = false, rollbackFor =  {PortalException.class, SystemException.class, InvalidParameterException.class, NoSuchEntryException.class})

@Transactionalはliferayの1つです

メソッドには、

@WebMethod

WSはうまく機能しますが、トランザクションはありません-ドキュメントが作成され、NoSuchEntryExceptionドキュメントがLiferayに残ります。

以下のフォーラムスレッドに基づいて試行されました: http ://www.liferay.com/community/forums/-/message_boards/message/9019161

portal-ext.properties
transaction.manager.impl=org.springframework.transaction.jta.JtaTransactionManager
transaction.manager.property.allowCustomIsolationLevels=true
transaction.manager.property.globalRollbackOnParticipationFailure=true

フックスプリング構成では何もしませんでした。

分離などを変更しようとしましたが成功しませんでした。

ガイドはいますか?

どうもありがとうございます

4

3 に答える 3

1

トランザクション セクション内で例外をスローすると、すべてがトランザクションになる可能性があります。liferay では、トランザクションはサービス エンティティのメソッド内、つまり ...ServiceUtil クラス内でのみ処理されます。メソッドの名前の前に CRUD 操作を付ける必要があります。したがって、「ダミー」エンティティを作成する必要があります..それはより簡単な方法です。

于 2015-02-26T23:10:01.547 に答える
1

あなたはこれを試すことができます、

*impl クラスにメソッドを追加する必要があり、デフォルトではトランザクションです。

https://liferay.dev/forums/-/message_boards/message/4928729

于 2020-04-09T05:38:15.550 に答える
0

1 つのトランザクションで 3 つのメソッドすべてを必ずしも呼び出す必要がない場合は、AssetTagUtil の代わりに AssetTagServiceUtil を呼び出します。addFileEntry 呼び出しは、とにかくトランザクションではないファイルシステムにファイルを作成します。

Web サービスから呼び出されるカスタム サービスを作成して、オールインワン トランザクションにすることを本当に主張する場合。

その理由は、Liferay のトランザクション マネージャーがサービスでのみ @Transactional アノテーションをスキャンするためです。

于 2012-10-27T11:02:08.220 に答える