Hi all,

I've implemented something related to this, although not directly using the Jetty HttpClient. Due to internal reasons, I settled on the Jersey Client API. On a side note, you can tell the Jersey Client API to use the Jetty HttpClient underneath, so might still be useful here.

I've published some code at https://github.com/boekhold/jaxws-jersey-client-api. I'd be very interested to hear your feedback on this!

One note, the maarten.jaxws.jersey.client.JerseyClientTransportTube.checkStatusCode() method was copied pretty much verbatim from the JAX-WS RI at https://java.net/projects/jax-ws/sources/sources/content/tags/JAXWS_2_2_5_07282011/jaxws-ri/rt/src/com/sun/xml/ws/transport/http/client/HttpTransportPipe.java?rev=14203. I have no idea what implications that has on any licensing. If anybody can comment on that I'd be very grateful.

Maarten

On 2015-02-22 21:30, Gregor Jarisch wrote:
Hi Maarten,

yes, you are correct. I didn't read carefully enough, sorry for that. Nevertheless it also would be interesting for JAX-RS.

Gregor


Maarten Boekhold<[email protected]> , 20.02.2015 17:23:

    Hi gregor,

    Unless I am missing something from your email, I think you
    misread  'JAX-WS'  as 'JAX-RS'...

    Maarten

    On 20 February 2015 17:00:50 Gregor Jarisch <[email protected]>
    wrote:

    Hi Maarten,

    you may wanna take a look at the client library implementation of
    Resteasy 3.x. Although they don't use jetty http client in their
    implementation (unfortunately), that might be a good starting
    point to look at how it is implemented in general (even if you
    not using resteasy as JAX-RS implementation).
    
http://docs.jboss.org/resteasy/docs/3.0.9.Final/userguide/html_single/#RESTEasy_Client_Framework

    Having said this; since http2 is close by and jetty close to
    releasing something useful here - how about trying to implement
    it with http2 already? Just a thought.

    Gregor

    Maarten Boekhold<[email protected]> , 17.02.2015 12:26:

        Hi,

        Done some more research. I think something like the following
        should be possible:

          * Create a JettyHttpClientFeature extends WebServiceFeature
            that acts as the container for the HttpClient instance to use
          * Pass that feature as part of the
            service.getXXXPort(feature) "proxy factory" method
          * Create (and register) a
            JettyHttpClientTransportTubeFactory/JettyHttpClientTransportTube
            implementations
          * The factory has access to the ClientTubeAssemblerContext,
            which has access to WSBinding which has access to the
            WebServiceFeatures that were provided to the getXXXPort()
            method.
              o If our JettyHttpClientFeature is enabled, then return
                an instance of JettyHttpClientTransportTube
                (initialized with the HttpClient connection)
              o Otherwise return the default HttpTransportPipe (which
                implements Tube)

        Any comments on this?

        Maarten

        On 2015-02-17 12:58, Maarten Boekhold wrote:
        Hi all,

        I am wondering if it is in any way possible to use the Jetty
        HTTP Client to handle the underlying HTTP communication for
        JAX-WS *client requests*, eg:

        HttpClient client = new HttpClient();
        // configure HttpClient

        Service service = ...;
        StockQuote quoteService = (StockQuote)service.getPort(portName);
        javax.xml.ws.BindingProvider bp =
        (javax.xml.ws.BindingProvider)quoteService;
        Map<String,Object> context = bp.getRequestContext();
        context.setProperty("HTTP.CLIENT", client);
        Float quote = quoteService.getPrice(ticker);

        And that request would be done using the "client" instance
        of HttpClient. Also, this would need to work with the JAX-WS
        reference implementation as included in JSE 7 & 8.

        If something like this is not currently possible, does
        anybody have any idea where to start looking for what needs
        to be coded? I've been looking at the JAX-WS specifications,
        specifically chapters 5 & 6 (Service APIs and Core APIs),
        but I'm getting a bit lost. Googling also has turned up
        something related to "TransportPipeFactory", which I guess
        is specific to the reference implementation, because it's
        not mentioned in the JAX-WS standard specifications.

        Maarten


        _______________________________________________
        jetty-users mailing list
        [email protected]  <mailto:[email protected]>
        To change your delivery options, retrieve your password, or unsubscribe
        from this list, visit
        https://dev.eclipse.org/mailman/listinfo/jetty-users



        _______________________________________________
        jetty-users mailing list
        [email protected]
        To change your delivery options, retrieve your password, or
        unsubscribe from this list, visit
        https://dev.eclipse.org/mailman/listinfo/jetty-users

    _______________________________________________
    jetty-users mailing list
    [email protected]
    To change your delivery options, retrieve your password, or
    unsubscribe from this list, visit
    https://dev.eclipse.org/mailman/listinfo/jetty-users


    _______________________________________________
    jetty-users mailing list
    [email protected]
    To change your delivery options, retrieve your password, or
    unsubscribe from this list, visit
    https://dev.eclipse.org/mailman/listinfo/jetty-users



_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to