2012-05-24 79 views
1

我創建了一個JAX-WS web服務並將它部署在weblogic 10.3.3上。它部署成功,一切正常。JAX-WS如何在weblogic中隱藏WSDL?

現在,我們想通過隱藏WSDL來訪問web服務。我嘗試從weblogic管理控制檯隱藏WSDL。轉到這個位置

Deployed application -> Webservice -> Configuration tab 

在這個選項卡中,通過將在參數「假」,「WSDL發佈文件」。

保存這個創建了一個Plan.xml。當我嘗試激活Weblogic中的更改時,會出現此問題。以下是我得到的例外情況:

激活更改期間發生錯誤,請參閱日誌以瞭解 的詳細信息。

在部署WebService模塊的準備階段遇到的錯誤 'TB_DBLEGI_SIMULATOR-trunk.war'。在部署 WebService模塊'TB_DBLEGI_SIMULATOR-trunk.war'時遇到錯誤。無法發佈 WSDL產生java.io.IOException:WSDL文件應該被放置在META-INF/WSDL, 或WEB-INF/WSDL

WSDL文件應該被放置在META-INF/WSDL,或WEB-INF/wsdl

在我的戰爭中,WSDL放在WEB-INF/wsdl文件夾內。 另外,我試圖把它放在不同的地方,但我沒有運氣。

+0

有可能在JAX-RPC。在註解@WSDL中,我們有一個屬性「exposed」。無論如何,我們可以隱藏wsdl,例如@WSDL(暴露= false) – javaDev

回答

4

您可以隨時編寫和註冊Filter來阻止對指定資源的訪問。 例如:

public class BlockFilter implements Filter { 

    @Override 
    public void init(FilterConfig config) throws ServletException {} 

    @Override 
    public void destroy() {} 

    public void doFilter(ServletRequest request, ServletResponse response, 
         FilterChain chain) throws IOException, ServletException { 
     return; 
    } 
} 

並註冊在web.xml過濾器:

<filter> 
    <filter-name>blockFilter</filter-name> 
    <filter-class>namespace.BlockFilter</filter-class>  
</filter> 

<filter-mapping> 
    <filter-name>blockFilter</filter-name> 
    <url-pattern>*?wsdl</url-pattern> 
</filter-mapping>