2013-11-03 51 views
0

我正在嘗試使用SoapUI部署模擬REST服務。我使用SoapUI的「部署爲戰爭」工具,以Tomcat作爲容器,在localhost:8080(在WinXP上)。但是,運行服務時所做的任何請求都會返回SoapUI模擬服務日誌頁面。因此,如果服務的根目錄是http://localhost:8080/foo/,並且我向http://localhost:8080/foo/bar發出請求,則響應將是根目錄(代碼爲200)處的日誌頁面的HTML。SoapUI模擬服務始終返回根目錄下的日誌頁面

我相信我擁有了一切設置正確,在我的WEB-INF/web.xml中,所列出here:從內部本身了SoapUI運行服務時

<servlet-mapping> 
<servlet-name>SoapUIMockServlet</servlet-name> 
<url-pattern>/*</url-pattern> 
</servlet-mapping> 

一切正常。

我的上下文路徑被設置爲'/ foo'。我有我的foo.war和戰爭目錄本身在Tomcat的webapps目錄下。不過我注意到的是,當我試圖從日誌頁面訪問WSDL我得到的是這樣的:

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 
</wsdl:definitions> 

不知道如果這是我應該會看到什麼,或者如果這是在所有相關。

Tomcat的新手和SoapUI相對較新。任何建議非常感謝。

+0

爲了記錄這也發生在Jetty和JBoss下,所以不是特定於Tomcat。 – ChrisM

回答

0

我想你試過本指南"Mocking with a custom OnRequest Script"

,你可以see,它是有差距的。該servlet將只識別的準確路徑:

if(pathInfo.equals(mockRunner.getMockService().getPath())) 

可以改寫servlet來解決問題。

+0

是的,我熟悉那篇文檔。原諒我,但在這種情況下,我不確定我是否理解了「差距」的含義。我嘗試設置腳本中的確切路徑,並且在WEB-INF/web.xml servlet-mapping部分(' http:// localhost:8080/*')中設置。在第一個例子中,我遇到了和以前一樣的問題,後者在運行Tomcat時遇到了錯誤,甚至無法在瀏覽器中訪問http:// localhost:8080。 – ChrisM

+0

http://www.soapui.org/images/stories/Getting_Started/Generate_MockService_Dialog_soapUI.png – matheus

+0

如果您看到圖片http://www.soapui.org/images/stories/Getting_Started/Generate_MockService_Dialog_soapUI.png路徑字段是精確的mockRunner.getMockService()。getPath()變量。 url-pattern不會受到影響,因爲「/ *」即URL的上下文或資源部分將被忽略,因爲必須完全匹配。爲了解決這個問題,我修補了這一行,以便用startsWith替換equals。 – matheus