在一台计算机上测试大量Web服务

时间:2010-01-20 07:56:17

标签: java web-services jetty

我们有一个庞大的物理设备系统,它们都运行一个用于控制的Web服务和一个用于控制这些设备的中央控制系统。我需要替换这样的物理设备以测试控制单元。我将如何在一台计算机上运行多个测试设备实例。 SOAP中使用的协议与wsdl写在一起。除了Web服务之外,每个测试设备还需要一个Web服务器来监视状态和生成事件。

我的第一种方法是嵌入jetty并将axis2用于webservices,但是我在制作这种飞行时遇到了一些麻烦。我设法让axis2 SimpleHttpServer使用web服务,但据我所知,SimpleHttpServer不会让我运行Servlets或更不用说战争了。我错过了更好的方法吗?

我考虑让代理服务器监听任意数量的端口,并将请求转发到web服务到中央Web服务,并附加一个参数,说明请求来自哪个端口,但由于wsdl是写在石头上,我无法通过这个参与者。

编辑:我正在使用Netbeans为我生成一个Web服务。作为魅力,但我的项目不够。出于某种原因wsmpl上的wsimport chokes。我不明白Netbeans如何部署到捆绑的Glassfish服务器,但是如果我将生成的dist / my-project.war放入tomcat,则webservice不起作用。更少出现在web.xml中。我错过了什么?

3 个答案:

答案 0 :(得分:0)

Axis2并不打算用作servlet容器,因此使用SimpleHttpServer对您没有帮助。

但Jetty是一个功能齐全的Servlet容器。如果你想让它发挥作用,你必须用Jetty运行你的战争。 (或任何其他servlet container,但Jetty非常好)

我不是Jetty专家,但这应该有效:

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

(取自Jetty Wiki

答案 1 :(得分:0)

请注意,如果您通过SOCKS代理路由网络请求,您基本上可以将SOCKS代理中的硬编码名称和端口重定向到您需要的任何内容。

答案 2 :(得分:0)

好的,我已经找到了解决方案。我可以使用Glassfish。然后我以不同的名称多次部署相同的webapp。然后我有一个用glassfish制作的小代理,它可以监听多个端口,然后将请求转换为运行i glassfish的其中一个实例。