2010-01-20 23 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

相关问题