Problem

If Domibus is running on Java 8 version 111 and above, and the application has Proxy settings enabled, then on invocation of HTTPS URLs through the proxy, Domibus might face the error:

Caused by: java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 407 Proxy Authentication Required"

Solution

This is because basic authentication to proxy server has been disabled by default from Java 8 version 111 onwards.

Re-enable this setting by adding the environment setting   -Djdk.http.auth.tunneling.disabledSchemes="" on start-up script of each managed server.

 

Reference: https://www.oracle.com/technetwork/java/javase/8u111-relnotes-3124969.html

 

Sample Error Stack Trace:


2018-09-27 15:50:56,009 [] [default] [a77eb997-ab18-4093-9238-cc12a3a1b1b7@domibus.eu]  WARN o.a.c.p.PhaseInterceptorChain:475 - [DefaultMessageListenerContainer-9] - Interceptor for {http://domibus.eu}msh-dispatch-service#{http://cxf.apache.org/jaxws/dispatch}Invoke has thrown exception, unwinding now

org.apache.cxf.interceptor.Fault: Could not send Message.

        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:67)

        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)

        at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:533)

        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:442)

        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:343)

        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)

        at org.apache.cxf.endpoint.ClientImpl.invokeWrapped(ClientImpl.java:331)

        at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:321)

        at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:240)

        at eu.domibus.ebms3.sender.MSHDispatcher.dispatch(MSHDispatcher.java:55)

        at eu.domibus.ebms3.sender.MSHDispatcher$$FastClassBySpringCGLIB$$105974a1.invoke(<generated>)

        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)

        at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)

        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)

        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)

        at eu.domibus.ebms3.sender.MSHDispatcher$$EnhancerBySpringCGLIB$$c632324b.dispatch(<generated>)

        at eu.domibus.ebms3.sender.MessageSender.sendUserMessage(MessageSender.java:175)

        at eu.domibus.ebms3.sender.MessageSender.onMessage(MessageSender.java:245)

        at eu.domibus.ebms3.sender.MessageSender$$FastClassBySpringCGLIB$$977479f4.invoke(<generated>)

        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)

        at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:84)

        at eu.domibus.logging.MDCCleanAspect.process(MDCCleanAspect.java:37)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:498)

        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627)

        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616)

        at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)

        at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)

        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)

        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)

        at eu.domibus.ebms3.sender.MessageSender$$EnhancerBySpringCGLIB$$294f1ae8.onMessage(<generated>)

        at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:744)

        at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:682)

        at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:649)

        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:317)

        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:235)

        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1168)

        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1160)

        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1057)

        at java.lang.Thread.run(Thread.java:748)