2010-01-20 22 views
1

我們有一個大型物理設備系統,它們都運行Web服務進行控制,並且有一箇中央控制系統來控制這些設備。爲了測試控制單元,我需要替換這種物理設備。我將如何着手在單臺計算機上運行測試設備的多個實例。 SOAP中使用的協議,其中寫入了wsdl。除了web服務以外,每個測試設備都需要一個web服務器來監視狀態並生成事件。在單臺計算機上測試大量Web服務

我的第一種方法是嵌入碼頭並使用axis2來進行web服務,但是我在製作這個軟件時遇到了一些麻煩。我設法讓axis2 SimpleHttpServer與web服務一起工作,但據我所知,SimpleHttpServer不會讓我運行Servlets或者讓戰爭不再發生。我錯過了更好的方法嗎?

我考慮讓一個代理服務器偵聽任意數量的端口,並將請求轉發到一個web服務到一箇中心web服務,並附加一個參數,說明請求來自哪個端口,但是由於wsdl寫在石頭上,我不能通過這個參數。

編輯:我使用Netbeans爲我生成一個web服務。作爲一種魅力,但對我的項目來說還不夠。出於某種原因wsdl上的wsimport扼流圈。我不明白Netbeans如何部署到捆綁的Glassfish服務器,但是如果我將生成的dist/my-project.war放到tomcat中,web服務不起作用。更少顯示在web.xml中。我錯過了什麼?

回答

0

好吧我已經想出了一個解決方案。我可以使用Glassfish。然後我用不同的名字多次部署同一個webapp。然後,我有一個glassfish的小代理,它在多個端口上偵聽,然後將請求轉換爲運行i glassfish的其中一個實例。

0

Axis2並不意味着用作servlet容器,所以使用SimpleHttpServer不會幫助您。

但是Jetty是一個全功能的Servlet容器。如果你想讓它工作,你必須用Jetty運行你的戰爭。 (或任何其他servlet container,但碼頭是完美的罰款)

我不是專家碼頭,但這應該工作:

Server server = new Server(8080); 
Context root = new Context(server, "/", Context.SESSIONS); 
root.addServlet(new ServletHolder(yourServletInstance), "/*"); 
server.start(); 

(來自Jetty Wiki兩者)​​

+0

那麼在jetty中運行webservices需要什麼步驟 – 2010-01-20 08:23:19

+0

更新了我的答案。 – 2010-01-20 13:22:41

+0

yourServletInstance從哪裏來,我應該使用什麼工具來實現它? – 2010-01-20 13:24:16

0

請注意,如果您的路由您的網絡請求通過SOCKS代理,您可以將SOCKS代理中的硬編碼名稱和端口重定向到您需要的任何地方。

+0

控制系統不支持SOCKS,它是由不同的供應商,所以這是一個不行。 – 2010-01-20 09:54:00

+0

Schade。然後考慮在控制系統前放置一個透明代理服務器,它允許您代理任何流量。 http://www.faqs.org/docs/Linux-mini/TransparentProxy.html#s2 – 2010-01-20 11:42:18

+0

Thorbjørn,我在Jetty中實現了一個代理服務器。然後我意識到它不會解決我的問題,因爲我不知道如何在同一臺機器上運行同一個web服務的多個實例。 – 2010-01-20 12:19:41

相關問題