Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 3.1.9
-
Component/s: Transports
-
Labels:None
-
Estimated Complexity: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.