3

こんばんは!ここで 1 つの大きな問題が発生しています。まず、Java でプログラムされた Lotus Notes エージェントが Web サービス (これも Java) を通過できるように、JVM でプロキシを設定する方法に関する質問を昨年ここに投稿しました。数週間の調査の後、ようやく問題が見つかりました。現在は機能しています。では、ユーザー テスト環境でそれを移動する時が来ました...何だと思いますか?!? うまくいきません!しかし、私は同じ問題に直面していません。実際、JVM でプロキシを設定するには、プロパティ「http.proxyHost」と「http.proxyPort」を設定する必要があります。そこで、Domino サーバーの管理者に、サーバー上の「java.policy」ファイルを変更して、それらのプロパティにアクセスできるように依頼しました (「java.policy」の開発バージョンをコピーして、「UAT ファイル」に貼り付けてもらいました)。 " バージョン)。運が悪い!まったく同じポリシーファイルを使用して別のサーバーに複製されたまったく同じコードは、2つの異なる方法で動作します...私はこれを取得します:

java.security.AccessControlException: access denied (java.util.PropertyPermission http.proxyHost write)

権限付与を逆にして、「http.proxyHost」と「proxyHost」に権限を付与してみました。何も機能しませんでした...そのため、「付与」セクション (コードベースなし) のすべてのアクセス許可を削除し、AllPermission のみを配置するように依頼しました。出来た!私の推測では、ポリシー ファイルにエラーがあり、アクセス許可が処理されていない可能性があります。これについて手を差し伸べてもらえないかと思っていました...ポリシーファイルは次のとおりです。

// 
// @(#)src/security/sov/config/java.policy, security, as142, 20070303 1.4.2.2 
// =========================================================================== 
// Licensed Materials - Property of IBM 
// "Restricted Materials of IBM" 
// 
// IBM SDK, Java(tm) 2 Technology Edition, v1.4.2 
// (C) Copyright IBM Corp. 1998, 2002. All Rights Reserved 
// =========================================================================== 
// 


// Standard extensions get all permissions by default 

grant codeBase "file:${java.home}/lib/ext/*" { 
        permission java.security.AllPermission; 
}; 

// default permissions granted to all domains 

grant { 
        // Allows any thread to stop itself using the java.lang.Thread.stop() 
        // method that takes no argument. 
        // Note that this permission is granted by default only to remain 
        // backwards compatible. 
        // It is strongly recommended that you either remove this permission 
        // from this policy file or further restrict it to code sources 
        // that you specify, because Thread.stop() is potentially unsafe. 
        // See "http://java.sun.com/notes" for more information. 
        permission java.lang.RuntimePermission "stopThread"; 
        permission java.lang.RuntimePermission "setContextClassLoader";    // This was added 

        // allows anyone to listen on un-privileged ports 
        permission java.net.SocketPermission "localhost:1024-", "listen"; 

        permission java.net.NetPermission "setDefaultAuthenticator";
        permission java.util.PropertyPermission "http.proxySet", "write"; 
        permission java.util.PropertyPermission "http.proxyHost", "write"; 
        permission java.util.PropertyPermission "http.proxyPort", "write"; 


        // "standard" properies that can be read by anyone 

        permission java.util.PropertyPermission "java.version", "read"; 
        permission java.util.PropertyPermission "java.vendor", "read"; 
        permission java.util.PropertyPermission "java.vendor.url", "read"; 
        permission java.util.PropertyPermission "java.class.version", "read"; 
        permission java.util.PropertyPermission "os.name", "read"; 
        permission java.util.PropertyPermission "os.version", "read"; 
        permission java.util.PropertyPermission "os.arch", "read"; 
        permission java.util.PropertyPermission "file.separator", "read"; 
        permission java.util.PropertyPermission "path.separator", "read"; 
        permission java.util.PropertyPermission "line.separator", "read"; 

        permission java.util.PropertyPermission "java.specification.version", "read"; 
        permission java.util.PropertyPermission "java.specification.vendor", "read"; 
        permission java.util.PropertyPermission "java.specification.name", "read"; 

        permission java.util.PropertyPermission "java.vm.specification.version", "read"; 
        permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; 
        permission java.util.PropertyPermission "java.vm.specification.name", "read"; 
        permission java.util.PropertyPermission "java.vm.version", "read"; 
        permission java.util.PropertyPermission "java.vm.vendor", "read"; 
        permission java.util.PropertyPermission "java.vm.name", "read"; 


        permission java.util.PropertyPermission "java.assistive", "read"; 

}; 

// Notes java code gets all permissions 

grant codeBase "file:${notes.binary}/*" { 
        permission java.security.AllPermission; 
}; 

grant codeBase "file:${notes.binary}/rjext/*" { 
        permission java.security.AllPermission; 
}; 

どんな手がかりでも大歓迎です...クライアントはかなり疲れていますが、これはうまくいきません!

4

2 に答える 2

0

同じ問題を抱えている可能性があり、ここにグーグルでアクセスする可能性がある人のために、AllProperties の get/set のセキュリティを許可することでこの問題を解決しました。列挙が機能しなかった理由はまだわかりません...

于 2012-07-16T11:42:50.060 に答える