Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.1.9
-
None
-
Unknown
Description
With Jetty 9 a reference to the jetty server is needed to create a ServerConnector (jetty's default connector).
See org.eclipse.jetty.server.ServerConnector.ServerConnector(Server)
Using the CXF JettyHTTPServerEngineFactory and JettyHTTPServerEngine to create a jetty server, it is impossible to override the Connector.
The method org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.setConnector(Connector) is useless, because it is impossible to create a ServerConnector without a Jetty Server and JettyHTTPServerEngine.getServer() returns null during configuration phase of the JettyHTTPServerEngine.
The example below leads to a NullPointerException:
public class Example { public static void main(String[] args) throws Exception { JettyHTTPServerEngineFactory factory = new JettyHTTPServerEngineFactory(); JettyHTTPServerEngine engine = factory.createJettyHTTPServerEngine(12345, "http"); ServerConnector connector = new ServerConnector(null); // engine.getServer() is also NULL at this time engine.setConnector(connector); Provider provider = Provider.provider(); EndpointImpl epi = (EndpointImpl) provider.createEndpoint(null, new FooImpl()); epi.publish("http://0.0.0.0:12345/foo"); } }
Exception in thread "main" java.lang.NullPointerException at org.eclipse.jetty.server.AbstractConnector.<init>(AbstractConnector.java:170) at org.eclipse.jetty.server.AbstractNetworkConnector.<init>(AbstractNetworkConnector.java:44) at org.eclipse.jetty.server.ServerConnector.<init>(ServerConnector.java:227) at org.eclipse.jetty.server.ServerConnector.<init>(ServerConnector.java:96) at Example.main(Example.java:14)
Class JettyHTTPServerEngine needs to be adapted to enable setting a custom jetty 9 connector.