My Oracle Support Banner

Agile SDK/API getRevision を実施すると java.lang.StackOverflowError エラーが発生する (Doc ID 2432319.1)

Last updated on AUGUST 09, 2018

適用範囲:

Oracle Agile PLM Framework - バージョン 9.3.3.0 以降
この文書の内容はすべてのプラットフォームに適用されます。

現象

実際の動作
Agile SDK API getRevision を実施すると java.lang.StackOverflowError エラーが発生します。
この現象は以下のケースで発生します。

1) SDK ユーザーがAgile SDKの getRevision APIを利用してライフサイクル・フェーズ : 停止 に設定された最新のリビジョンにアクセスしようとしていること

2) SDK ユーザーの役割に権限 : ディスカバリ(アイテム) と ライフサイクル・フェーズが停止以外のステータスになっている部品のみを読取り可能なカスタム読取り権限が設定されていること

エラー
Exception in thread "main" java.lang.StackOverflowError
at java.security.AccessController.doPrivileged(Native Method)
at weblogic.security.acl.internal.AuthenticatedSubject$SealableSet.<init>(AuthenticatedSubject.java:554)
at weblogic.security.acl.internal.AuthenticatedSubject.<init>(AuthenticatedSubject.java:117)
at weblogic.security.acl.internal.AuthenticatedSubject$1.run(AuthenticatedSubject.java:146)
at java.security.AccessController.doPrivileged(Native Method)
at weblogic.security.acl.internal.AuthenticatedSubject.getFromSubject(AuthenticatedSubject.java:132)
at weblogic.security.Security.runAs(Security.java:60)
at com.agile.api.common.WebLogicAuthenticator.doAs(WebLogicAuthenticator.java:111)
at com.agile.api.common.Security.doAs(Security.java:54)
at com.agile.api.common.Security.doAs(Security.java:109)
at com.agile.api.pc.item.Item.getSiteRevInfo(Item.java:100)
at com.agile.api.pc.Revisioned.getRevisions(Revisioned.java:178)
at com.agile.api.pc.Revisioned.getRevision(Revisioned.java:129)
at com.agile.api.pc.Revisioned.getRevision(Revisioned.java:133)
at com.agile.api.pc.Revisioned.getRevision(Revisioned.java:133)
at com.agile.api.pc.Revisioned.getRevision(Revisioned.java:133)
at com.agile.api.pc.Revisioned.getRevision(Revisioned.java:133)
at com.agile.api.pc.Revisioned.getRevision(Revisioned.java:133)
at com.agile.api.pc.Revisioned.getRevision(Revisioned.java:133)
at com.agile.api.pc.Revisioned.getRevision(Revisioned.java:133)

....

手順

1. Eclipse を開き、以下のコードを含むJavaプロジェクトを設定します 

> GetRevSample 
   > JRE System Library [JavaSE-1.7] 
   > src 
      > og 
     > GetRevSample.java 
   > Referenced Libraries 
      > AgileAPI.jar  E:\app\oracle\Agile\Agile933\integragtion\sdk\lib 
   
  
// =====        GetRevSample.java   ====== // 
package og;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.HashMap;
import com.agile.api.AgileSessionFactory;
import com.agile.api.IAgileSession;
import com.agile.api.IItem;
public class GetRevSample {
     //
     public static void main(String[] args) throws Exception {
          try {
               System.out.println("Program START");
               String url = "http://xxx:7001/Agile";
               String user = "yotest";
               String pw = "agile9";
               String itemNumber = "P00001";
               AgileSessionFactory factory = AgileSessionFactory.getInstance(url);
               HashMap params = new HashMap();
               params.put(AgileSessionFactory.USERNAME, user);
               params.put(AgileSessionFactory.PASSWORD, pw);
               IAgileSession session = factory.createSession(params);
               IItem item = (IItem)session.getObject(IItem.OBJECT_TYPE, itemNumber);
               System.out.println("StartGetRevision");
               item.getRevision();
               System.out.println("Program END");
          } catch (Exception e) {
               System.out.println(e.getMessage());
               StringWriter stringWriter = new StringWriter();
               PrintWriter printWriter = new PrintWriter(stringWriter);
               e.printStackTrace(printWriter);
               printWriter.flush();
               String stacktrace = stringWriter.toString();
               System.out.println(stacktrace);
          }
     }
}
 

2. Java Client 
    管理 > データ設定 > 条件
名称 : yoLifecyclePhase0730 
オブジェクト・タイプ : 部品 

タイトル・ブロック.ライフサイクル・フェーズ Not In 停止 

3. Java Client 
    管理 > ユーザー設定 > 権限 > Read 

新しい読取り権限を作成

名称: yoReadPartsOnlyLifecycleOtherThanInactive 
権限 : 読取り 
条件 : yoLifecyclePhase0730 
適用先 : <--- 全ての属性を追加 

4. 新しい読取り権限 : yoReadPartsOnlyLifecycleOtherThanInactive 
    を役割 : YOOnlyItemDescovery  に追加
   
5. ユーザー : yotest に 3つの役割を割り当てます : 
   
作成者は自分が作成したオブジェクトを読取りおよびディスカバリ可能
私のユーザー・プロファイル
YOOnlyItemDescovery 

6. 役割 : YOOnlyItemDescovery に 2つの権限を割り当てます : 

ディスカバリ(アイテム)
yoReadPartsOnlyLifecycleOtherThanInactive 

7. コードを実行します

Program START 
StartGetRevision 
Program END 

8. Web Clientにadminユーザーでログイン 
9. 新規ECO に 部品 : P00001 を割当て、ライフサイクル・フェーズを停止に設定します 
10. ECOをリリース済ステータスに進めます 
11. Web Clientにyotestユーザーでログイン 
12. P00001 に移動し、以下のエラーを表示させます 

Error 
Insufficiant privilege 

13. コードを実行します



変更点

 

原因

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


本書の内容
現象
変更点
原因
解決策
参照情報

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.