2012-08-01 21 views
1

我試圖從我的XPage中使用Web服務。我已經找到斯蒂芬Wissels博客條目添加/ lib/security目錄下面的行Webservices in XPages - AXIS vs. CXF如何從XPage中的OSGI包中訪問org.apache.axis以使用Web服務?

它工作正常,如果在java.policy文件中{}多米諾骨牌/ JVM

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文件?

回答

1

您是否嘗試過使用CXF代替Axis?如果還有其他的失敗......一個隱藏的LotusScript將會變成一個懶惰的方式。

或者,你可以將你的web服務打包成一個插件。他們比NSF中的代碼擁有更好的權限。

+0

是的,我試過CXF。不幸的是我仍然需要修改java.policy文件。 – 2012-08-02 10:11:13

+0

那麼下一站:將WS客戶端移動到插件? – stwissel 2012-08-02 13:56:11

0

也許你可以說服客戶的管理員,通過使用精確的撥款您不會妥協服務器的安全。例如:

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

我敢打賭,他們甚至不明白這是什麼兩項指令改變。

+0

這可能是一個機會。另一方面,如果我能說服他們,我可能會選擇「大」解決方案。使下一個項目更容易。 ;-) – 2012-08-02 15:45:05