Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-7179

Unable to set ServerConnector in JettyHTTPServerEngine using jetty 9

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.9
    • Fix Version/s: 3.1.10, 3.2.0
    • 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.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                ffang Freeman Fang
                Reporter:
                auster Michael Austermann
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: