1 Reply Latest reply on Apr 4, 2017 7:04 AM by andey

    Configuring JBOSS6.4.13 for HTTP1.0

    asthatulsi

      Hi

       

      I am trying to configure my JBOSS6.4.13 for HTTP1.0. As we migrated from WAS to JBOSS, one of our consumer are expecting response from our webservice in HTTP1.0. I tried following:

       

      1.Editied standalone-full-ha.xml to add connector for HTTP1.0.

      - Tried keeping both HTTP1.1, when starting it throws error on server startup:

      13:39:30,573 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.remoting.server.management: org.jboss.msc.service.StartException in service jboss.remoting.server.management: JBAS017112: Address already in use 127.0.0.1:9999

       

      -Replaced HTTP1.1 to HTTP1.0 and on server startup, get following error

       

      14:22:40,372 INFO [org.jboss.as.jacorb] (MSC service thread 1-1) JBAS016330: CORBA ORB Service started
      14:22:40,495 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.web.connector.http: org .jboss.msc.service.StartException in service jboss.web.connector.http: JBAS018007: Error starting web connector
              at org.jboss.as.web.WebConnectorService.start(WebConnectorService.java:393)
              at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980) [jboss-msc.jar:1.1.6.Final -redhat-1]
              at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1913) [jboss-msc.jar:1.1.6.Final-redhat-1 ]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_131]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_131]
              at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_131]
      Caused by: java.lang.IllegalArgumentException: JBWEB000026: Failed to instatiate protocol handler
              at org.apache.catalina.connector.Connector.<init>(Connector.java:90)
              at org.jboss.as.web.WebConnectorService.start(WebConnectorService.java:122)
              ... 5 more
      Caused by: java.lang.ClassNotFoundException: HTTP/1.0
              at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_131]
              at java.lang.Class.forName(Class.java:195) [rt.jar:1.7.0_131]
              at org.apache.catalina.connector.Connector.<init>(Connector.java:87)
              ... 6 more

      14:22:40,525 INFO [org.jboss.ws.common.management] (MSC service thread 1-2) JBWS022052: Starting JBoss Web Services - Stack CXF Server 4 .3.6.Final-redhat-1
      14:22:40,531 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.web.connector.https: or g.jboss.msc.service.StartException in service jboss.web.connector.https: JBAS018007: Error starting web connector
              at org.jboss.as.web.WebConnectorService.start(WebConnectorService.java:393)
              at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980) [jboss-msc.jar:1.1.6.Final -redhat-1]
              at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1913) [jboss-msc.jar:1.1.6.Final-redhat-1 ]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_131]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_131]
              at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_131]
      Caused by: java.lang.IllegalArgumentException: JBWEB000026: Failed to instatiate protocol handler
              at org.apache.catalina.connector.Connector.<init>(Connector.java:90)
              at org.jboss.as.web.WebConnectorService.start(WebConnectorService.java:122)
              ... 5 more
      Caused by: java.lang.ClassNotFoundException: HTTP/1.0
              at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_131]
              at java.lang.Class.forName(Class.java:195) [rt.jar:1.7.0_131]
              at org.apache.catalina.connector.Connector.<init>(Connector.java:87)
              ... 6 more

      14:22:40,772 INFO [org.apache.coyote.ajp] (MSC service thread 1-1) JBWEB003046: Starting Coyote AJP/1.3 on ajp-jboss-eap-vm2-8x32l.sit0. sit.cloud.td.com/10.87.89.55:8009



      zation completed in 759 ms
      14:22:48,217 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014612: Operation ("add") failed - address : ([
          ("subsystem" => "web"),
          ("connector" => "http")
      ]) - failure description: {"JBAS014671: Failed services" => {"jboss.web.connector.http" => "org.jboss.msc.service.StartException in servi ce jboss.web.connector.http: JBAS018007: Error starting web connector
          Caused by: java.lang.IllegalArgumentException: JBWEB000026: Failed to instatiate protocol handler
          Caused by: java.lang.ClassNotFoundException: HTTP/1.0"}}
      14:22:48,218 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014612: Operation ("add") failed - address : ([
          ("subsystem" => "web"),
          ("connector" => "https")
      ]) - failure description: {"JBAS014671: Failed services" => {"jboss.web.connector.https" => "org.jboss.msc.service.StartException in serv ice jboss.web.connector.https: JBAS018007: Error starting web connector
          Caused by: java.lang.IllegalArgumentException: JBWEB000026: Failed to instatiate protocol handler
          Caused by: java.lang.ClassNotFoundException: HTTP/1.0"}}
      14:22:48,397 INFO [org.jboss.as.server] (Controller Boot Thread) JBAS015859: Deployed "WSE_ChequeImage.ear" (runtime-name : "WSE_ChequeI mage.ear")
      14:22:48,403 INFO [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Service status report
      JBAS014777: Services which failed to start: service jboss.web.connector.http: org.jboss.msc.service.StartException in service jbos s.web.connector.http: JBAS018007: Error starting web connector
            service jboss.web.connector.https: org.jboss.msc.service.StartException in service jboss.web.connector.https: JBAS018007: Error sta rting web connector

      14:22:48,441 INFO [org.jboss.as] (Controller Boot Thread) JBAS015962: Http management interface listening on https://0.0.0.0:9991/manage                                                            ment
      14:22:48,445 INFO [org.jboss.as] (Controller Boot Thread) JBAS015952: Admin console listening on https://0.0.0.0:9991
      14:22:48,446 ERROR [org.jboss.as] (Controller Boot Thread) JBAS015875: JBoss EAP 6.4.13.GA (AS 7.5.13.Final-redhat-2) started (with error s) in 17367ms - Started 311 of 411 services (2 services failed or missing dependencies, 139 services are lazy, passive or on-demand)



      2. Also tried from JBOSS console, we try to create connector, In protocols only option is HTTP1.1 and  AJP1.3

       

      How can we add HTTP1.0 as the protocol with which response are returned to clients.

        • 1. Re: Configuring JBOSS6.4.13 for HTTP1.0
          andey

          The proper fix would of course be to have the client correctly implement HTTP 1.1.

           

          If that's not possible, and since I wasn't able to find any documentation on forcing HTTP 1.0 with Resteasy, I would suggest we try modifying their request to set it to HTTP 1.0, which I think should than cause an HTTP 1.0 response from Resteasy.

           

          This can be done at the HTTP level, it's not Resteasy specific.

           

          I think you can probably do this using servlet filters:

          https://vangjee.wordpress.com/2009/02/25/how-to-modify-request-headers-in-a-j2ee-web-application/

           

          However it's implemented, what you want to do is replace the HTTP/1.1 header value with HTTP/1.0.  It could potentially also maybe be a Resteasy interceptor or even as some sort of mod-rewrite or similar rule.

           

          This approach will also let you add code to examine the request and decide when to switch to HTTP/1.0 so it doesn't mess up your other clients the way a global configuration parameter probably would.