Package com.caucho.hessian.client
Class HessianProxyFactory
- java.lang.Object
-
- 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 tocreate
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
Fields Modifier and Type Field Description protected static java.util.logging.Logger
log
-
Constructor Summary
Constructors Constructor Description HessianProxyFactory()
Creates the new proxy factory.HessianProxyFactory(java.lang.ClassLoader loader)
Creates the new proxy factory.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 debugboolean
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 debugvoid
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.
-
-
-
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 interfaceServiceProxyFactory
- Parameters:
api
- the interface the proxy class needs to implementurl
- 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 implementurl
- 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 implementurl
- 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 interfacejavax.naming.spi.ObjectFactory
- Throws:
java.lang.Exception
-
encode
public static char encode(long d)
-
-