1

XPage 内から Web サービスを使用しようとしています。私はすでに、Stephan Wissels のブログ エントリ Webservices in XPages - AXIS vs. CXFを見つけました。

{domino}/jvm/lib/security ディレクトリの java.policy ファイルに次の行が追加されていれば、正常に動作します。

grant {
 permission java.lang.RuntimePermission "setContextClassLoader";
 permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};

私の問題は、顧客に非常に厳格な管理者がいるということです。java.policy ファイルを変更する方法はありません。

少し調べてみたところ、8.5.2 では org.apache.axis ファイルが OSGi バンドルに移動されていることがわかりました。java.policy の変更を回避するための私のアプローチは、このバンドルを使用することでした。しかし、アクセスしようとすると、常にエラーが発生します: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org.apache.axis.client.Service

バンドルを plugin.xml に追加しようとしても役に立ちませんでした。

<plugin>
<requires>
    <import plugin="org.apache.axis"/>
    <!--AUTOGEN-START-BUILDER: Automatically generated by null. Do not modify.-->
    <import plugin="org.eclipse.ui"/>
    <import plugin="org.eclipse.core.runtime"/>
    <import optional="true" plugin="com.ibm.commons"/>
    <import optional="true" plugin="com.ibm.commons.xml"/>
    <import optional="true" plugin="com.ibm.commons.vfs"/>
    <import optional="true" plugin="com.ibm.jscript"/>
    <import optional="true" plugin="com.ibm.designer.runtime.directory"/>
    <import optional="true" plugin="com.ibm.designer.runtime"/>
    <import optional="true" plugin="com.ibm.xsp.core"/>
    <import optional="true" plugin="com.ibm.xsp.extsn"/>
    <import optional="true" plugin="com.ibm.xsp.designer"/>
    <import optional="true" plugin="com.ibm.xsp.domino"/>
    <import optional="true" plugin="com.ibm.notes.java.api"/>
    <import optional="true" plugin="com.ibm.xsp.rcp"/>
    <import optional="true" plugin="com.ibm.xsp.extlib"/>
    <!--AUTOGEN-END-BUILDER: End of automatically generated section-->
  </requires>
</plugin>

XPage 内で org.apache.axis ファイルを使用する方法はありますか?

4

2 に答える 2

1

Axisの代わりにCXFを使用しようとしましたか?そして、他に何かが失敗した場合...少し隠されたLotusScriptは非常にうまくいきます。

または、Webサービスをプラグインにパックすることもできます。これらは、NSFのコードよりも優れた権限で実行されます。

于 2012-08-02T07:55:43.460 に答える
0

たぶん、クライアントの管理者に、正確な許可を使用することでサーバーのセキュリティを危険にさらさないことを納得させることができます。例えば:

grant codeBase "xspnsf://server:0/somedb.nsf/script/-"{
   permission java.lang.RuntimePermission "setContextClassLoader";
   permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
}

彼らは、この 2 つの指令が何を変更するのかさえ理解していないに違いありません。

于 2012-08-02T12:23:44.567 に答える