| ----- |
| HTTP Transport |
| ----- |
| XFire User's Guide |
| ----- |
| |
| HTTP Transport |
| |
| * XFireServlet |
| |
| The core of the HTTP Transport takes place in the XFireServletController. Your own servlets can delegate appropriate |
| requests to this class or you can use one of XFire's internal servlet classes. The XFireServlet is just a thin |
| wrapper for the controller. The XFireServletController provides an xml configuration layer on top of this. |
| |
| XFire also provides the XFireConfigurableServlet which reads the services.xml format automatically for you and the |
| XFireSpringServlet which provides Sprign integration. |
| |
| * HttpServletRequest/HttpServletResponse |
| |
| The HttpServletRequest/HttpServletResponse can be accessed via the XFireServletController. |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| HttpServletRequest request = XFireServletController.getRequest(); |
| HttpServletResponse response = XFireServletController.getResponse(); |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| This method will work all the XFire servlets (XFireServlet, XFireConfigurableServlet, XFireSpringServlet). |
| |
| * Client authentication |
| |
| The Apache Jakarta HttpClient is used under the covers to provide HTTP client support. There are two ways which you |
| can override the HttpClient settings: |
| |
| [[1]] You can set the USERNAME/PASSWORD |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| // Create your client |
| Client client = ....; |
| |
| // Or get it from your proxy |
| Client client = ((XFireProxy) Proxy.getInvocationHandler(myClientProxy)).getClient(); |
| |
| client.setProperty(Channel.USERNAME, "username"); |
| client.setProperty(Channel.PASSWORD, "pass"); |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| [[1]] You can supply your own HttpClientParms |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS, myParams); |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| The HTTPClient javadocs provide information on how to configure the HttpClientParams. |
| |
| * Proxy Support |
| |
| Proxy support looks very similar to the username/password scenario: |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| // Create your client |
| Client client = ....; |
| |
| // Or get it from your proxy |
| Client client = ((XFireProxy) Proxy.getInvocationHandler(myClientProxy)).getClient(); |
| client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_HOST, "host"); |
| client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_PORT, "8080"); |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| * HTTP Chunking |
| |
| You'll need to enable HTTP chunking on the client if you are sending large files which can't be cached in memory: |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| import org.codehaus.xfire.transport.http.HttpTransport; |
| |
| Client client = ....; |
| client.setProperty(HttpTransport.CHUNKING_ENABLED, "true"); |
| +---------------------------------------------------------------------------------------------------------------------+ |