jThinRich - Getting Started [UNDER CONSTRUCTION]
  1. System Requirements
  2. Installation
  3. Configuring Environment
  4. JThinWorker
  5. Hello World Example
  6. Client Customization
  7. Single Sign-on (SSO)
  8. Deployment and Upgrades
  9. Developing your own SSO homepage


1) System Requirements

Server

jThinRich has been tested with Tomcat 5.0.x and should work with most stanard web containers. Server can run under Java 1.4 or higher.


Client

- Desktop machine running Java 1.5
- IE/Firefox/Mozilla


2) Installation

Sample WAR Application

  • Place WAR file in web container webapps directory and restart/reload web server.
  • To access application use single sign-on feature logon into the homepage and start the corresponding application.


Building Requirements
You may use the source distribution as a starting point to help you build your own applications.

build-jthin.xml - Compiles the core jThinRich libraries; both client and server.
build-client.xml - Compiles the jThinRich admin and helloworld client-side applications. You may use this to add your own custom appilcations. It compiles the client classes and installs them within the webprods directory.
build-server.xml - Compiles the jThinRich admin and helloworld server-side applications. You may use this to add your own custom applications. It compiles the server classes and installs them within the WEB-INF/lib directory.


3) Configuring Environment

A jThinRich environment lives within a servlet webapp application. Each jThinRich webapp can contain one or more jThinRich products. These products can be found in the webprods directory. Each product in the webprods directory contains the following:

  • webprods/demo/home.jnlp. JNLP file that defines how the product is launched and configured.
  • webprods/demo/lib. Contains all the necessary client jars needed to run the via webstart.
  • webprods/demo/conf/product-config.properties Defines the state of product application.
  • WEB-INF/lib. Where to put all server jars.
  • WEB-INF/web.xml. Where to define jThinRich services.
  • WEB-INF/system-env.properties. Defines state of overall jThinRich system state.
  • WEB-INF/jthin-users.xml. Default and optional configuration for granting user names and passwords. Can also be used to grant users rights to certain functions and services. Should normally be replaced by a custom solution.


4) JThinWorker

While there are many classes that make up the jThinRich framework, the JThinWorker class can be viewed as the the central API. JThinWoker provides the developer with the ability to wrap web services calls to the server while handling GUI processing in a asynchronous and Swing/awt thread safe manner. This allows the jThinRich framework to handle remote server calls in a controlled and consistent manner. Here is a JThinWorker example:

    
/**
 * Having the class be an anonymous class allows you to inline the implementation without
 * the need to create an explicit subclass. 
 */

//Any local var that you pass to the anonymous class must declared final.
final String stData = "hello";
final JThinWorker worker = new JThinWorker(frame, "SomeNameIGiveIt")
{
    private SomeOutput output = null;
    
    /**
      * Process the remote operation here. Do NOT place any Swing/awt calls here.
      */
    public Object remoteOperation() throws WServiceAccessException, ClientInvokeException
     {
         /*** Application GUI logic here ****/
           
         DemoServiceIF remoteDemoService = DemoServiceStub(LookupServiceFactory.getBaseServiceURL());
         output = remoteDemoService.getOutput();
         
         return null;
     }

      /**
        * Make all necessary Swing calls here to parse and use any output generated by
        * the webservices call made by the method above.
        */
      public void guiOperation()
      {
         //update Swing component
         textField.setText(output);
      }
 };

//this actually executes the logic shown above by kicking off the thread
worker.start();   

    

During the execution of the above thread, the user will be shown an hour glass and will not be able to perform any user input on the body of the application. The user will, however, be able to stop the processing if it takes too long to run.


5) Hello World Example

UNDER CONSTRUCTION