2

I am trying to set up HTTP2 through Tomcat 9. I installed the certificate keys using OpenSSL and I can successfully login to my Java webapp at https://localhost:8443/login. I can see the requests made using HTTP2 in the debugger window. Everything good so far.

But now when I try to deploy my Axis web service at the same port (8443) I get error: I am using Axis Admin Client to deploy the service.

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode: 
faultString: java.net.ConnectException: Connection refused: connect
faultActor: 
faultNode: 
faultDetail: 
{http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection refused: connect
    at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.transport.http.HTTPSender.invoke(HTat java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)
at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:427)
at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:92)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:1792)
at org.apache.axis.client.AdminClient.process(AdminClient.java:439)
at org.apache.axis.client.AdminClient.process(AdminClient.java:404)
at org.apache.axis.client.AdminClient.process(AdminClient.java:410)
at org.apache.axis.client.AdminClient.process(AdminClient.java:320)
at com.roi.motivator.gui.login.SoapLoader.internalDeploySoap(SoapLoader.java:120)
at com.roi.motivator.gui.login.SoapLoader$1.run(SoapLoader.java:59)

{http://xml.apache.org/axis/}hostname:myLaptop

This is my tomcat server.xml

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
           maxThreads="150" SSLEnabled="true" >
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
       <SSLHostConfig honorCipherOrder="false">
            <Certificate certificateKeyFile="conf/ca.key"
            certificateFile="conf/ca.crt"/>
       </SSLHostConfig>
    </Connector>

What am I missing?

UPDATE:

When I tried implementing SSL using Tomcat 8 and HTTP 1.1, Axis Service DID work as expected on port 8443. So this has to be something to do with the new HTTP2 compatibility or a missing configuration?

Tomcat 8 server.xml:

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true" 
           keystoreFile="C:\home\tomcat\conf\tomcat.jks" keystorePass="abc"
           truststoreFile="C:\home\tomcat\conf\tomcat.jks" truststorePass="abc"
           clientAuth="false" sslProtocol="TLS" />

web.xml

<web-app id="WebApp"         
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="
        http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5">

   <servlet id="Servlet_1">
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

   <servlet-mapping id="ServletMapping_1">
   <servlet-name>AxisServlet</servlet-name>
   <url-pattern>/axis/*</url-pattern>
   </servlet-mapping>

</web-app>

I tried configuring SSL in Tomcat 9 using Http11NioProtocol and the Apache Axis service worked fine on port 8443. So the Http11AprProtocol or Http2Protocol is the one causing the problem.

yonikawa
  • 581
  • 1
  • 9
  • 32

0 Answers0