That stacktrace is telling you that
com.sun.xml.internal.ws.transport.http.server.ServerMgr.createContext(ServerMgr.java:85)
is attempting to create a context on a server.
The fact that it attempts to .setExecutor() means that it created a new
server at the point of ServerMgr.createContext().
But what is odd is that this attempt to .setExecutor() occurred on an
already started server. (which is a no-no, and the cause of the error).
You might want to enable java.util.logging and set the logger named "
com.sun.xml.internal.ws" to level FINEST and see what its attempting to do.
Some thoughts, because you are using
JettyhttpServerProvider.setServer(server), you are essentially wanting to
use a shared server instance, regardless of subsequent
HttpServer.createHttpServer() calls.
This might be tripping up the WS implementation.
You'll either want to manage the server entirely yourself, or use the
http-spi functions in a non-shared mode.
So that simplifies your codebase to the following ....
--(snip)--
System.setProperty("com.sun.net.httpserver.HttpServerProvider",
"org.eclipse.jetty.http.spi.JettyHttpServerProvider");
InetSocketAddress addr = new InetSocketAddress("localhost", 8080);
HttpServer server = new JettyHttpServerProvider.createHttpServer(addr, 10);
Endpoint endpoint = Endpoint.publish(endpointURL, myWebServices);
server.start();
--(snip)--
This is using the http-spi directly, allowing it to manage the http server
state and whatnot.
Not the hybrid approach that you were working with.
It seems that the WS implementation you are using requires this approach.
--
Joakim Erdfelt <[email protected]>
webtide.com <http://www.webtide.com/> - intalio.com/jetty
Expert advice, services and support from from the Jetty & CometD experts
eclipse.org/jetty - cometd.org
On Wed, Jul 2, 2014 at 8:32 AM, Alejandro Alberola <[email protected]> wrote:
> The fix works. But, is there a way to hot deploy the WS once the Server
> has been started ?
>
> If I publish the WS after the Server has been started I get:
>
> Caused by: java.lang.IllegalStateException: STARTED
> at
> org.eclipse.jetty.http.spi.DelegatingThreadPool.setExecutor(DelegatingThreadPool.java:55)
> at
> org.eclipse.jetty.http.spi.JettyHttpServer.setExecutor(JettyHttpServer.java:129)
> at
> com.sun.xml.internal.ws.transport.http.server.ServerMgr.createContext(ServerMgr.java:85)
> ... 9 more
>
>
> Thanks.
>
> ---
> Alejandro Alberola
> Bio Data Systems
> ---
>
> El 01/07/14 19:47, Joakim Erdfelt escribió:
>
> You are hitting this requirement ...
>
>
> https://github.com/eclipse/jetty.project/blob/master/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpServer.java#L131
>
> To fix, change:
>
> Server server = new Server(8080);
>
> to
>
> Server server = new Server(new DelegatingThreadPool()); // <-- required
> for http-spi
> ServerConnector connector = new ServerConnector(server);
> connector.setPort(8080); // <-- your port is now set via a connector
> server.addConnector(connector);
>
> and try again.
>
> --
> Joakim Erdfelt <[email protected]>
> webtide.com <http://www.webtide.com/> - intalio.com/jetty
> Expert advice, services and support from from the Jetty & CometD experts
> eclipse.org/jetty - cometd.org
>
>
> On Tue, Jul 1, 2014 at 2:21 AM, Alejandro Alberola <[email protected]>
> wrote:
>
>> Hello,
>>
>> I have an embedded Jetty 9.2.1 server in my application where I have
>> deployed a
>> servlet in a ServletContextHandler. At the same time I want to deploy a
>> Metro WS
>> in the same server using JettyHttpServerProvider, but when I try to
>> publish the
>> WS Endpoint I get the following exception:
>>
>> Caused by: com.sun.xml.internal.ws.server.ServerRtException: Server
>> Runtime Error: java.lang.UnsupportedOperationException:
>> !DelegatingThreadPool
>> at com.sun.xml.internal.ws
>> .transport.http.server.ServerMgr.createContext(ServerMgr.java:102)
>> at com.sun.xml.internal.ws
>> .transport.http.server.HttpEndpoint.publish(HttpEndpoint.java:63)
>> at com.sun.xml.internal.ws
>> .transport.http.server.EndpointImpl.publish(EndpointImpl.java:171)
>> at
>> com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:118)
>> at javax.xml.ws.Endpoint.publish(Endpoint.java:240)
>>
>> If I use two Jetty server instances embedded in my application and
>> listening in different ports,
>> all work properly, but I would like to share the same port among the
>> servlet and the Metro WS.
>>
>> My faulty code follows:
>>
>> -------------------------------------------------
>> Server server = new Server(8080);
>>
>> System.setProperty("com.sun.net.httpserver.HttpServerProvider",
>> "org.eclipse.jetty.http.spi.JettyHttpServerProvider");
>> JettyHttpServerProvider.setServer(server);
>>
>> ContextHandlerCollection contexts = new ContextHandlerCollection();
>>
>> servletContext = new ServletContextHandler(server, "/myapp", true,
>> false);
>> contexts.addHandler(servletContext);
>>
>> ServletHolder servletHolder = new ServletHolder(MyServlet);
>> servletContext.addServlet(servletHolder, "/servlet-path");
>>
>> HandlerCollection handlerCollection = new HandlerCollection();
>> handlerCollection.setHandlers(new Handler[]{ contexts });
>>
>> Endpoint endpoint = Endpoint.publish(endpointURL, myWebServices);
>>
>> server.setHandler(contexts);
>>
>> server.start();
>> -------------------------------------------------
>>
>> Any idea ?
>> Thanks.
>>
>> ---
>> Alejandro Alberola
>> Bio Data Systems
>> ---
>>
>> _______________________________________________
>> jetty-users mailing list
>> [email protected]
>> To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/jetty-users
>>
>
>
>
> _______________________________________________
> jetty-users mailing [email protected]
> To change your delivery options, retrieve your password, or unsubscribe from
> this list, visithttps://dev.eclipse.org/mailman/listinfo/jetty-users
>
>
>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users