- System Requirements
- Configuring Environment
- Hello World Example
- Client Customization
- Single Sign-on (SSO)
- Deployment and Upgrades
- Developing your own SSO homepage
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.
- Desktop machine running Java 1.5
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.
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
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
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
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.
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();
* 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
//this actually executes the logic shown above by kicking off the thread
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.