Notes on Thin Clients, Demo Run-Time vs Java Web-Start (JWS)

JWS for Production B2BPO, Demos utilize Java Command line apps

This framework claims to support ON Demand B2B data interchanges for small enterprises while requiring nothing more than broadband and a browser. In light of the fact that Client-side java applications are often required in the demos, the thin client claim may be on thin ice. This command line used to run one of the Demos calls a bat file on NT that in turn runs a Java Jar file using numerous command line args in the process. Although not a thin client in the purest sense, there is a strong argument for the idea that in the B2BPO Production Version, the client run-time software when combined with a suitably equipped workstation with JDK 1.4.2+ and Java Web Start, a B2BPO customer equipped with nothing more than a brower and a business to run should look forward to complete turn key functionality and zero Client install issues. As explained at the very bottom, with nothing more than an average user's level of knowledge about the business data in the local file system, it is possible to set up your first B2BPO data interfaces the day that you open for business.

Java Web Start (JWS) Explained

On closer examination, the lengthy command line expressions from the Demos, used as Client-side application launchers, can be neatly encapsulated by the JWS environment, providing a hands off, zero install, thin-client experience. From the command line expression used in the Track3 Demo you can see that the bat file on the first line is passing an additional 8 lines of arguments into a concluding java.exe expression that you see after the horizontal bar below:

bin/b2bpoll
...
where the b2bpoll.bat executes the following :
____________________________________

"%JAVA_HOME%\bin\java.exe" -jar lib\polling-1.2.jar %CMD_LINE_ARGS%

Getting to the encapsulation and simple elegance of Java Web Start from the gobledygook in the expression above is a stretch, but in order to understand how JWS solves the entire problem, one must observe the file that is the object of the java.exe, the polling-1.2.jar and its contents . The jar manifest of polling-1.2.jar, containing a list of elements that are easily subsumed in JWS, appears below:


Created-By: 1.4.2-beta-b19 (Sun Microsystems Inc.)
Built-By: r
package: com.borneo.b2bpo
Build-Jdk: 1.4.2-beta
Extension-Name: b2bpo
Specification-Vendor: Borneo Inc
Specification-Title: B2B Data Interface Tools
Implementation-Version: 1_2
Main-Class: com.borneo.client.FileEventClient

Class-Path: config 
repository/axis.jar
repository/commons-discovery.jar
repository/commons-logging.jar
repository/jaxrpc.jar
repository/saaj.jar
repository/xml-apis.jar
repository/xercesImpl.jar
repository/wsdl4j.jar
repository/jaxp-api.jar
repository/xercesImpl.jar
repository/xalan.jar
repository/xml-apis.jar
repository/sax.jar
repository/dom.jar
repository/activation.jar
repository/mail.jar
repository/jax-qname.jar
repository/namespace.jar
repository/j2ee.jar
repository/log4j-1.2.8.jar

Under the aegis of JWSand JNLP, a simple chunk of HTML collaborates with a download process, in effect pushing from the server a proxy java application run-time environment capable of handling all aspects of the client-side demo application. All of the complexity formerly seen in client side demos is now encapsulated in the .jnlp file

As the sample block of code from a .jnlp file below demonstrates, JWS encodes for all of the Jar file Manifest data from the above box using Java Network Launching Protocol and API. The .jar files now appear inside .jnlp tags forresources and jar elements. Relevant information from the Manifest Header section above appears below, inside the application-desc element.

<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for DemoTrack3 Application -->
  codebase="http://localhost:80/"
  href="DemoTrack3.jnlp">
    <information>
       <title>B2BPO Demos</title>
       <vendor>Rags</vendor>
       <description>Java Application - Publish Files on a Topic</description>
       <description kind="short">Dummy</description>
       <offline-allowed/>
     </information>
     <resources>
       <j2se version="1.4.2"/>
       <jar href="repository/axis.jar"/>
       <jar href="repository/commons-discovery.jar"/>
       <jar href="repository/commons-logging.jar"/>
       <jar href="repository/jaxrpc.jar"/>
       ...
     </resources>
     <application-desc main-class="com.borneo.client.FileEventClient">
        <argument>data.topic.action=subscribe</argument>
        <argument>util.timer.poll.period=15000</argument>
        <argument>3rd-Arg</argument>
        <argument>4th-Arg</argument>
        ...
     </application-desc>
</jnlp>

As you can see, Java Command line args are handled by the .jnlp file's final section above. Now all that remains is the HTML hook to trigger the Browser's download of DemoTrack3.jnlp file, which in turn initiates an elegant and totally encapsulated JWS execution of the entire ball of wax that made the client side of the demo seem "fat" and complicated. The short block of HTML code below accomplishes all this, and, in so doing, provides a compelling conclusion to the argument that B2BPO infrastructure truely is thin client.

bin/b2bpoll
<html>
  <head> 
      <title>B2BPO - DemoTrack3</title>
  </head>
  <body> 
       <a href="DemoTrack3.jnlp">Launch 
         Demo Track 3</a>
  </body>
</html>
 

Production B2BPO - Thin Client steps for a New Publisher on a Topic

  • Authenticate/ Authorize to Publish using Login Form and Menu
  • Complete Topic Definition Form on the left-hand side
  • Additional fields describing the dataSource ( File data or XML Data) will be required
  • Publisher is a Data owner, and must eventually grant Access priviledges to Subscriber(s)
  • HTML Page like "DemoTrack3.jnlp" link above sent to Publisher enables thin-client Publishing with one clik
  • Event-driven and or "Polling Scheduled" strategy for publishing encapsulated by JWS and by Form field Selections

Production B2BPO - Thin Client steps for a New Subscriber on a Topic

  • Authenticate/ Authorize to Subscribe using Login Form and TopicList Menu
  • Complete Subscription Form on the right-hand side
  • On completion of Subscription Form, notify the Topic's Data owner, who grants access priviledges
  • PostOffice automatically dispatches Published data to Subscribers with good priviledge level