org.sapia.ubik.rmi.server.transport.http.servlet
Class ServletTransportProvider

java.lang.Object
  extended by org.sapia.ubik.rmi.server.transport.http.servlet.ServletTransportProvider
All Implemented Interfaces:
ServletConsts, TransportProvider

public class ServletTransportProvider
extends java.lang.Object
implements TransportProvider, ServletConsts

This transport provider is intended to be instantiated from within a servlet. The servlet delegates request handling to this instance's handleRequest() method.

The code excerpt below demonstrates how to create an instance of this class and use it in a servlet implementation:

 ...

 public void init(ServletConfig conf) throws ServletException {
   _provider = new ServletTransportProvider();
    TransportManager.registerProvider(_provider);

   Properties props = new Properties();

   // property below would normally be passed through a
   // servlet init parameter.

   props.setProperty(ServletConsts.SERVLET_URL_KEY,
                     "http://localhost:8080/ubik");

  // this tells ubik "under" which transport our object will be exported
   props.setProperty(Consts.TRANSPORT_TYPE, ServletConsts.DEFAULT_SERVLET_TRANSPORT_TYPE);

   try{
     _foo = new UbikFoo();
     Hub.exportObject(_foo, props);
   }catch(RemoteException e){
    throw new ServletException("Could not export Foo", e);
   }
 }

 ...

 protected void service(HttpServletRequest req, HttpServletResponse res)
   throws ServletException, IOException {
   _provider.handleRequest(req, res);
 }

 ...
 

Then, in a client VM, to connect to the remote object, we proceed as follows:

 TransportManager.registerProvider(new ServletTransportProvider());
 Foo foo = (Foo)Hub.connect(new ServletAddress("http://localhost:8080/ubik"));
 

NOTE: there can be only ONE instance of this instance registered to the Hub per web application

.

Author:
Yanick Duchesne
Copyright:
Copyright © 2002-2004 Sapia Open Source Software. All Rights Reserved.
License:
Read the license.txt file of the jar or visit the license page at the Sapia OSS web site
See Also:
handleRequest(HttpServletRequest, HttpServletResponse)

Field Summary
 
Fields inherited from interface org.sapia.ubik.rmi.server.transport.http.servlet.ServletConsts
DEFAULT_SERVLET_TRANSPORT_TYPE, SERVLET_URL_KEY
 
Constructor Summary
  ServletTransportProvider()
           
protected ServletTransportProvider(java.lang.String transportType)
           
 
Method Summary
 Connections getPoolFor(ServerAddress address)
          Returns a client connection pool to the given server address.
 java.lang.String getTransportType()
          Returns this instance's "transport type".
 void handleRequest(javax.servlet.http.HttpServletRequest httpReq, javax.servlet.http.HttpServletResponse httpRes)
           
 Server newDefaultServer()
          This method is called by Ubik RMI's runtime when a server is needed on the client side to recieve asynchronous responses (i.e.: callbacks).
 Server newServer(java.util.Properties props)
          This method returns a Server impl., given the properties passed in.
 void shutdown()
          Empty implementation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ServletTransportProvider

public ServletTransportProvider()

ServletTransportProvider

protected ServletTransportProvider(java.lang.String transportType)
Method Detail

getTransportType

public java.lang.String getTransportType()
Description copied from interface: TransportProvider
Returns this instance's "transport type".

Specified by:
getTransportType in interface TransportProvider
Returns:
a transport type.
See Also:
TransportProvider.getTransportType()

newDefaultServer

public Server newDefaultServer()
                        throws java.rmi.RemoteException
Description copied from interface: TransportProvider
This method is called by Ubik RMI's runtime when a server is needed on the client side to recieve asynchronous responses (i.e.: callbacks). Implementations must in this case provide a "default" Server instance.

Specified by:
newDefaultServer in interface TransportProvider
Returns:
a Server.
Throws:
java.rmi.RemoteException
See Also:
TransportProvider.newDefaultServer()

newServer

public Server newServer(java.util.Properties props)
                 throws java.rmi.RemoteException
This method returns a Server impl., given the properties passed in. A single property is expected: ubik.rmi.transport.servlet.url, whose value must correspond to the URL of the servlet that is encapsulating this instance.

Specified by:
newServer in interface TransportProvider
Parameters:
props - the Properties used to create the server.
Returns:
a Server instance.
Throws:
java.rmi.RemoteException
See Also:
ServletConsts.SERVLET_URL_KEY, TransportProvider.newServer(java.util.Properties)

shutdown

public void shutdown()
Empty implementation.

Specified by:
shutdown in interface TransportProvider
See Also:
TransportProvider.shutdown()

getPoolFor

public Connections getPoolFor(ServerAddress address)
                       throws java.rmi.RemoteException
Description copied from interface: TransportProvider
Returns a client connection pool to the given server address.

Specified by:
getPoolFor in interface TransportProvider
Parameters:
address - a ServerAddress.
Returns:
a Connection.
Throws:
java.rmi.RemoteException - if a problem occurs creating the connection.
See Also:
TransportProvider.getPoolFor(org.sapia.ubik.net.ServerAddress)

handleRequest

public void handleRequest(javax.servlet.http.HttpServletRequest httpReq,
                          javax.servlet.http.HttpServletResponse httpRes)


Copyright © 2010 Sapia OSS. All Rights Reserved.