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

ClassNotFoundException: javax.net.SocketFactory not found by org.apache.cxf.cxf-rt-transports-http

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.2.1
    • 3.2.2, 3.1.15
    • OSGi
    • None
    • I am running CXF OSGI Bundles in an Apache Felix framework.

    • Unknown

    Description

      For my resource server, I am writing a custom OpenID interceptor and this interceptor needs to communicate with OpenID server to get some information via HTTPS requests.

      HTTPS Communication triggered from the Input Interceptor with a CXF Web Client fails due to a OSGI Wiring Problem.

      I have seen that "org.apache.cxf.cxf-rt-transports-http" Bundle Imports "javax.net.ssl"
      However an abstract class in the "javax.net" package (javax.net.SocketFactory) is tired to be loaded as well.
      This causes a ClassNotFoundException since the "javax.net" package is not Imported in MANIFEST.MF.

      If I add "javax.net" package to the Import-Package MANIFEST.MF file in the
      org.apache.cxf.cxf-rt-transports-http.jar
      I do not get any ClassNotFoundException and GET request to HTTPS endpoint can be completed.

      This is the Exception Stack Trace:
      2017-12-21T12:37:07.535Z ERROR [qtp2011886533-56|org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver:114] Error occurred during error handling, give up!
      org.apache.cxf.interceptor.Fault: java.io.IOException: Error while initializing secure socket
      at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:75)
      at org.apache.cxf.phase.PhaseInterceptorChain.wrapExceptionAsFault(PhaseInterceptorChain.java:374)
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:332)
      at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
      at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
      at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
      at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
      at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
      at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:191)
      at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
      at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:225)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
      at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276)
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584)
      at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
      at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284)
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
      at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
      at org.eclipse.jetty.server.Server.handle(Server.java:534)
      at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
      at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
      at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
      at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
      at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
      at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
      at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
      at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
      at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
      at java.lang.Thread.run(Thread.java:748)
      Caused by: javax.ws.rs.ProcessingException: java.io.IOException: Error while initializing secure socket
      at org.apache.cxf.jaxrs.client.AbstractClient.checkClientException(AbstractClient.java:611)
      at org.apache.cxf.jaxrs.client.AbstractClient.preProcessResult(AbstractClient.java:587)
      at org.apache.cxf.jaxrs.client.WebClient.doResponse(WebClient.java:1114)
      at org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:1051)
      at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:897)
      at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:866)
      at org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:431)
      at org.apache.cxf.jaxrs.client.SyncInvokerImpl.method(SyncInvokerImpl.java:135)
      at org.apache.cxf.jaxrs.client.SyncInvokerImpl.method(SyncInvokerImpl.java:130)
      at org.apache.cxf.jaxrs.client.SyncInvokerImpl.get(SyncInvokerImpl.java:50)
      at org.apache.cxf.jaxrs.client.spec.InvocationBuilderImpl.get(InvocationBuilderImpl.java:88)
      at com.helper.service.security.oauth2.impl.OAuth2HelperFactory.getEndpoints(OAuth2HelperFactory.java:211)
      at com.helper.service.security.oauth2.impl.OAuth2Helper.getPublicKey(OAuth2Helper.java:178)
      at com.helper.service.security.oauth2.impl.OAuth2Helper.authenticate(OAuth2Helper.java:139)
      at com.helper.bundle.rest.impl.dosgi.security.OpenIdAuthorizationInterceptor.handleMessage(OpenIdAuthorizationInterceptor.java:71)
      at org.apache.cxf.jaxrs.security.SimpleAuthorizingFilter.filter(SimpleAuthorizingFilter.java:39)
      at org.apache.cxf.jaxrs.utils.JAXRSUtils.runContainerRequestFilters(JAXRSUtils.java:1687)
      at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:201)
      at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:77)
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
      ... 36 common frames omitted
      Caused by: java.io.IOException: Error while initializing secure socket
      at org.apache.cxf.transport.https.HttpsURLConnectionFactory.createConnection(HttpsURLConnectionFactory.java:104)
      at org.apache.cxf.transport.http.URLConnectionHTTPConduit.createConnection(URLConnectionHTTPConduit.java:122)
      at org.apache.cxf.transport.http.URLConnectionHTTPConduit.setupConnection(URLConnectionHTTPConduit.java:126)
      at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:504)
      at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46)
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
      at org.apache.cxf.jaxrs.client.AbstractClient.doRunInterceptorChain(AbstractClient.java:683)
      at org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:1050)
      ... 52 common frames omitted
      Caused by: java.lang.NoClassDefFoundError: javax/net/SocketFactory
      at org.apache.cxf.transport.https.HttpsURLConnectionFactory.decorateWithTLS(HttpsURLConnectionFactory.java:155)
      at org.apache.cxf.transport.https.HttpsURLConnectionFactory.createConnection(HttpsURLConnectionFactory.java:99)
      ... 59 common frames omitted
      Caused by: java.lang.ClassNotFoundException: javax.net.SocketFactory not found by org.apache.cxf.cxf-rt-transports-http [75]
      at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1610)
      at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
      at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      ... 61 common frames omitted

      Attachments

        Issue Links

          Activity

            People

              ffang Freeman Yue Fang
              mcancomert Mehmet Can Cömert
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: