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

Java 在一台计算机上测试大量Web服务,java,web-services,jetty,Java,Web Services,Jetty,我们有一个大型的物理设备系统,所有这些设备都运行一个web服务进行控制,并有一个中央控制系统来控制这些设备。我需要做一个这样的物理设备的替代品,以便测试控制单元。如何在一台计算机上运行多个测试设备实例。SOAP中使用的协议,wsdl是用石头写的。除了webservice之外,每个测试设备都需要一个webserver来监视状态和生成事件 我的第一种方法是嵌入jetty并将axis2用于Web服务,但我在实现这一点上遇到了一些困难。我设法让axis2 SimpleHttpServer与Web服务一起

我们有一个大型的物理设备系统,所有这些设备都运行一个web服务进行控制,并有一个中央控制系统来控制这些设备。我需要做一个这样的物理设备的替代品,以便测试控制单元。如何在一台计算机上运行多个测试设备实例。SOAP中使用的协议,wsdl是用石头写的。除了webservice之外,每个测试设备都需要一个webserver来监视状态和生成事件

我的第一种方法是嵌入jetty并将axis2用于Web服务,但我在实现这一点上遇到了一些困难。我设法让axis2 SimpleHttpServer与Web服务一起工作,但据我所知,SimpleHttpServer不会让我运行servlet,更不用说战争了。我缺少的是更好的方法吗

我考虑过让代理服务器监听任意数量的端口,并将请求转发给一个Web服务到一个中心Web服务,该中心Web服务带有一个额外的参数,说明请求来自哪个端口,但由于wsdl是一成不变的,所以我无法传递这个参数


编辑:我正在使用Netbeans为我生成一个Web服务。这是一种魅力,但对我的项目来说还不够。出于某种原因,wsimport阻塞了wsdl。我不明白Netbeans如何部署到捆绑的Glassfish服务器上,但是如果我将生成的dist/my-project.war放到tomcat中,Web服务将无法工作。更不用说web.xml了。我缺少什么?

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

但是Jetty是一个功能齐全的Servlet容器。如果你想让它发挥作用,你必须与Jetty展开战争。(或任何其他,但码头是完美的)

我不是码头专家,但这应该行得通:

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

(摘自)

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

好的,我找到了一个解决方案。我可以用玻璃鱼。然后我以不同的名称多次部署同一个webapp。然后我用glassfish制作了一个小型代理,它监听多个端口,然后将请求转换为运行glassfish的一个实例

那么,在Jetty中运行Web服务需要哪些步骤?您的ServletInstance来自何处?我应该使用哪些工具来创建它?这是您在问题中提到的servlets的一个实例。通常,它们可以像任何POJO一样实例化,
newMyWebServiceServlet()
,除非您将servlet设计为以任何其他方式实例化。(工厂或其他)是的,那将运行servlet,但不是webservices。我认为这至少是您遇到的问题之一…?控制系统不支持SOCKS,它是由不同的供应商制造的,因此这是一个禁忌。然后考虑在控制系统前面放置一个透明代理,它允许你代理任何流量。Thorbjørn,我在Jetty中实现了一个代理服务器。然后我意识到它不能解决我的问题,因为我不知道如何在同一台机器上运行同一Web服务的多个实例。