com.caucho.hessian.client
Class HessianProxyFactory

java.lang.Object
  extended by com.caucho.hessian.client.HessianProxyFactory
All Implemented Interfaces:
ServiceProxyFactory, javax.naming.spi.ObjectFactory

public class HessianProxyFactory
extends java.lang.Object
implements ServiceProxyFactory, javax.naming.spi.ObjectFactory

Factory for creating Hessian client stubs. The returned stub will call the remote object for all methods.

 String url = "http://localhost:8080/ejb/hello";
 HelloHome hello = (HelloHome) factory.create(HelloHome.class, url);
 
After creation, the stub can be like a regular Java class. Because it makes remote calls, it can throw more exceptions than a Java class. In particular, it may throw protocol exceptions. The factory can also be configured as a JNDI resource. The factory expects to parameters: "type" and "url", corresponding to the two arguments to create In Resin 3.0, the above example would be configured as:
 <reference>
   <jndi-name>hessian/hello</jndi-name>
   <factory>com.caucho.hessian.client.HessianProxyFactory</factory>
   <init-param url="http://localhost:8080/ejb/hello"/>
   <init-param type="test.HelloHome"/>
 </reference>
 
To get the above resource, use JNDI as follows:
 Context ic = new InitialContext();
 HelloHome hello = (HelloHome) ic.lookup("java:comp/env/hessian/hello");

 System.out.println("Hello: " + hello.helloWorld());
 

Authentication

The proxy can use HTTP basic authentication if the user and the password are set.


Field Summary
protected static java.util.logging.Logger log
           
 
Constructor Summary
HessianProxyFactory()
          Creates the new proxy factory.
HessianProxyFactory(java.lang.ClassLoader loader)
          Creates the new proxy factory.
 
Method Summary
 java.lang.Object create(java.lang.Class<?> api, java.lang.String urlName, java.lang.ClassLoader loader)
          Creates a new proxy with the specified URL.
 java.lang.Object create(java.lang.Class<?> api, java.net.URL url, java.lang.ClassLoader loader)
          Creates a new proxy with the specified URL.
 java.lang.Object create(java.lang.Class api, java.lang.String urlName)
          Creates a new proxy with the specified URL.
 java.lang.Object create(java.lang.String url)
          Creates a new proxy with the specified URL.
protected  HessianConnectionFactory createHessianConnectionFactory()
           
static char encode(long d)
           
 java.lang.String getBasicAuth()
           
 HessianConnectionFactory getConnectionFactory()
          Returns the connection factory to be used for the HTTP request.
 long getConnectTimeout()
          The socket connection timeout in milliseconds.
 AbstractHessianInput getHessian1Input(java.io.InputStream is)
           
 AbstractHessianInput getHessian2Input(java.io.InputStream is)
           
 AbstractHessianInput getHessianInput(java.io.InputStream is)
           
 AbstractHessianOutput getHessianOutput(java.io.OutputStream os)
           
 java.lang.Object getObjectInstance(java.lang.Object obj, javax.naming.Name name, javax.naming.Context nameCtx, java.util.Hashtable<?,?> environment)
          JNDI object factory so the proxy can be used as a resource.
 long getReadTimeout()
          The socket timeout on requests in milliseconds.
 HessianRemoteResolver getRemoteResolver()
          Returns the remote resolver.
 SerializerFactory getSerializerFactory()
          Gets the serializer factory.
 boolean isChunkedPost()
          Set true if should use chunked encoding on the request.
 boolean isDebug()
          Gets the debug
 boolean isOverloadEnabled()
          Returns true if overloaded methods are allowed (using mangling)
 void setChunkedPost(boolean isChunked)
          Set true if should use chunked encoding on the request.
 void setConnectionFactory(HessianConnectionFactory factory)
          Sets the connection factory to use when connecting to the Hessian service.
 void setConnectTimeout(long timeout)
          The socket connect timeout in milliseconds.
 void setDebug(boolean isDebug)
          Sets the debug
 void setHessian2Reply(boolean isHessian2)
          True if the proxy can read Hessian 2 responses.
 void setHessian2Request(boolean isHessian2)
          True if the proxy should send Hessian 2 requests.
 void setOverloadEnabled(boolean isOverloadEnabled)
          set true if overloaded methods are allowed (using mangling)
 void setPassword(java.lang.String password)
          Sets the password.
 void setReadTimeout(long timeout)
          The socket timeout on requests in milliseconds.
 void setSerializerFactory(SerializerFactory factory)
          Sets the serializer factory.
 void setUser(java.lang.String user)
          Sets the user.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static java.util.logging.Logger log
Constructor Detail

HessianProxyFactory

public HessianProxyFactory()
Creates the new proxy factory.


HessianProxyFactory

public HessianProxyFactory(java.lang.ClassLoader loader)
Creates the new proxy factory.

Method Detail

setUser

public void setUser(java.lang.String user)
Sets the user.


setPassword

public void setPassword(java.lang.String password)
Sets the password.


getBasicAuth

public java.lang.String getBasicAuth()

setConnectionFactory

public void setConnectionFactory(HessianConnectionFactory factory)
Sets the connection factory to use when connecting to the Hessian service.


getConnectionFactory

public HessianConnectionFactory getConnectionFactory()
Returns the connection factory to be used for the HTTP request.


setDebug

public void setDebug(boolean isDebug)
Sets the debug


isDebug

public boolean isDebug()
Gets the debug


isOverloadEnabled

public boolean isOverloadEnabled()
Returns true if overloaded methods are allowed (using mangling)


setOverloadEnabled

public void setOverloadEnabled(boolean isOverloadEnabled)
set true if overloaded methods are allowed (using mangling)


setChunkedPost

public void setChunkedPost(boolean isChunked)
Set true if should use chunked encoding on the request.


isChunkedPost

public boolean isChunkedPost()
Set true if should use chunked encoding on the request.


getReadTimeout

public long getReadTimeout()
The socket timeout on requests in milliseconds.


setReadTimeout

public void setReadTimeout(long timeout)
The socket timeout on requests in milliseconds.


getConnectTimeout

public long getConnectTimeout()
The socket connection timeout in milliseconds.


setConnectTimeout

public void setConnectTimeout(long timeout)
The socket connect timeout in milliseconds.


setHessian2Reply

public void setHessian2Reply(boolean isHessian2)
True if the proxy can read Hessian 2 responses.


setHessian2Request

public void setHessian2Request(boolean isHessian2)
True if the proxy should send Hessian 2 requests.


getRemoteResolver

public HessianRemoteResolver getRemoteResolver()
Returns the remote resolver.


setSerializerFactory

public void setSerializerFactory(SerializerFactory factory)
Sets the serializer factory.


getSerializerFactory

public SerializerFactory getSerializerFactory()
Gets the serializer factory.


createHessianConnectionFactory

protected HessianConnectionFactory createHessianConnectionFactory()

create

public java.lang.Object create(java.lang.String url)
                        throws java.net.MalformedURLException,
                               java.lang.ClassNotFoundException
Creates a new proxy with the specified URL. The API class uses the java.api.class value from _hessian_

Parameters:
url - the URL where the client object is located.
Returns:
a proxy to the object with the specified interface.
Throws:
java.net.MalformedURLException
java.lang.ClassNotFoundException

create

public java.lang.Object create(java.lang.Class api,
                               java.lang.String urlName)
                        throws java.net.MalformedURLException
Creates a new proxy with the specified URL. The returned object is a proxy with the interface specified by api.
 String url = "http://localhost:8080/ejb/hello");
 HelloHome hello = (HelloHome) factory.create(HelloHome.class, url);
 

Specified by:
create in interface ServiceProxyFactory
Parameters:
api - the interface the proxy class needs to implement
url - the URL where the client object is located.
Returns:
a proxy to the object with the specified interface.
Throws:
java.net.MalformedURLException

create

public java.lang.Object create(java.lang.Class<?> api,
                               java.lang.String urlName,
                               java.lang.ClassLoader loader)
                        throws java.net.MalformedURLException
Creates a new proxy with the specified URL. The returned object is a proxy with the interface specified by api.
 String url = "http://localhost:8080/ejb/hello");
 HelloHome hello = (HelloHome) factory.create(HelloHome.class, url);
 

Parameters:
api - the interface the proxy class needs to implement
url - the URL where the client object is located.
Returns:
a proxy to the object with the specified interface.
Throws:
java.net.MalformedURLException

create

public java.lang.Object create(java.lang.Class<?> api,
                               java.net.URL url,
                               java.lang.ClassLoader loader)
Creates a new proxy with the specified URL. The returned object is a proxy with the interface specified by api.
 String url = "http://localhost:8080/ejb/hello");
 HelloHome hello = (HelloHome) factory.create(HelloHome.class, url);
 

Parameters:
api - the interface the proxy class needs to implement
url - the URL where the client object is located.
Returns:
a proxy to the object with the specified interface.

getHessianInput

public AbstractHessianInput getHessianInput(java.io.InputStream is)

getHessian1Input

public AbstractHessianInput getHessian1Input(java.io.InputStream is)

getHessian2Input

public AbstractHessianInput getHessian2Input(java.io.InputStream is)

getHessianOutput

public AbstractHessianOutput getHessianOutput(java.io.OutputStream os)

getObjectInstance

public java.lang.Object getObjectInstance(java.lang.Object obj,
                                          javax.naming.Name name,
                                          javax.naming.Context nameCtx,
                                          java.util.Hashtable<?,?> environment)
                                   throws java.lang.Exception
JNDI object factory so the proxy can be used as a resource.

Specified by:
getObjectInstance in interface javax.naming.spi.ObjectFactory
Throws:
java.lang.Exception

encode

public static char encode(long d)