我尝试通过REST发送请求.我在使用firefox rest-client时得到了成功的响应,但是在SoapUI中我得到了下面的异常.如何解决这个问题?谢谢.
java.net.ConnectException:连接超时:在java.net.PlainSocketImpl.socketConnect(本机方法)在java.net.PlainSocketImpl.doConnect(来源不明)在java.net.PlainSocketImpl.connectToAddress(来源不明)在Java的连接. net.PlainSocketImpl.connect(未知来源)在java.net.SocksSocketImpl.connect(未知来源)在java.net.Socket.connect(未知来源)在java.net.Socket.connect(未知来源)在java.net.插座.(来源不明)在java.net.Socket中.(来源不明)在org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:80)在org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory .createSocket(DefaultProtocolSocketFactory.java:122)在org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)在com.eviware.soapui.impl.wsdl.support.http.SoapUIMultiThreadedHttpConnectionManager $ HttpConnectionAdapter.open(SoapUIMultiThreadedHttpConnectionManager .java:1637)在org.apache.commons 位于org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)的.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) )在com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:202)在com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:123)在java.util.concurrent.Executors $ RunnableAdapter.call(来源不明)在java.util.concurrent.FutureTask中$ Sync.innerRun(来源不明)在java.util.concurrent.FutureTask.run(来源不明)在java.util中. concurrent.ThreadPoolExecutor $ Worker.runTask(来源不明)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(来源不明)在java.lang.Thread.run(来源不明)
我使用 Vert.x v3.5.1。有最简单的代码示例:
vertx.createHttpServer()
.requestHandler(anyRouter::accept)
.listen(8080);
Run Code Online (Sandbox Code Playgroud)
在我的例子中,事件循环组的大小是 16,所以我希望我的请求会影响 16 个线程。服务器已成功启动,但它仅在一个线程中工作。(我使用不同的 tcp-connections 发送请求,所以保持活动不是这里的原因。)
类HttpServerImpl包含httpHandlerMgr并且这个管理器处理一个事件循环池(名为availableWorkers)。在调试期间,我看到这个池只包含一个工人。
使用 Verticle 模型并不能解决问题,仍然没有使用所有线程。
如果我在循环中多次创建服务器,它会有所帮助。因此,我有许多受影响的线程和一台共享服务器。但它看起来像解决方法。
问题是如何创建使用所有可用事件循环线程的 Web 服务器?
下面使用 Verticle 实现
因此,该实现使用了一半的可用线程(8 个线程)。但我希望它使用 16 :)
public static void main(String[] args) throws Exception {
int eventLoopSize = 16;
Vertx vertx = new VertxOptions().setEventLoopPoolSize(eventLoopSize);
for (int i=0;i<eventLoopSize; i++) {
vertx.deployVerticle(new MyServer(vertx), deploymentOptions);
}
}
public class MyServer implements Verticle {
final Vertx vertx;
public MyServer(Vertx vertx) {
this.vertx …Run Code Online (Sandbox Code Playgroud)