[ https://issues.apache.org/jira/browse/CXF-7596?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16305508#comment-16305508 ]
ASF GitHub Bot commented on CXF-7596: ------------------------------------- precoder commented on issue #362: [CXF-7596] Adding javax.net OSGI package import into HTTP Transports … URL: https://github.com/apache/cxf/pull/362#issuecomment-354302114 Hey, I have made this pull request for the issue I made in the JIRA by following the instructions on the CXF home page. Here is the brief description of the problem: **javax.net** is a package in the Java rt.jar and it has **javax.net.SocketFactory** class, which is the base class for the **javax.net.ssl.SSLSocketFactory** org.apache.cxf.cxf-rt-transports-http bundle does import "javax.net.ssl" but it does not import "javax.net". As a result of this behaviour, we get a Class Not Found Exception in case of **SSLSocketFactory** is loaded by transports-http bundle. Currently I can have a workaround by setting the boot delegation property for the Felix Framework (or any other OSGI framework) as following: org.osgi.framework.bootdelegation=javax.net However, in my opinion this causes an inconsistent behaviour since javax.net.ssl is imported by the bundle but the base package must be boot delegated. In my opinion either we can say everything in the rt.jar should be boot delegated or rt.jar packages must be imported same as any other third party libraries. I personally would say boot deletion should not be the default way. If you do not accept this as a Bug do not accept solution proposal here, could you please show me the correct configuration proposal. Note: In Karaf I do not get this error since I guess package is somehow boot delegated. We found it by debugging the org.apache.felix.framework.BundleWiringImpl but I could not find the exact configuration for the boot delegation in Karaf. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > ClassNotFoundException: javax.net.SocketFactory not found by > org.apache.cxf.cxf-rt-transports-http > -------------------------------------------------------------------------------------------------- > > Key: CXF-7596 > URL: https://issues.apache.org/jira/browse/CXF-7596 > Project: CXF > Issue Type: Bug > Components: OSGi > Affects Versions: 3.2.1 > Environment: I am running CXF OSGI Bundles in an Apache Felix > framework. > Reporter: Mehmet Can Cömert > > 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 -- This message was sent by Atlassian JIRA (v6.4.14#64029)