Any J2SE or J2EE application can act as a CWS Client, so its structure and packaging depends on the type of application. Here is a few general hints related to Cayenne:

- DO NOT include Cayenne XML files in a client distribution - this information will be loaded in runtime via CWS from the server.
- Include client persistent objects.
- Make sure all needed jars are available in runtime.

### Client Deployment with Java Web Start

One common approach for distributing J2SE applications (especially desktop applications) is via Java Web Start. Below is a sample JNLP deployment descriptor that can be used as a template for Web Start based distribution:

    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp codebase="$$codebase">

         <information>
             <title>Cayenne::Sample Client App</title>
             <vendor>MyCompany</vendor>
         </information>

         <security>
             <all-permissions/>
         </security>

         <resources>
           <j2se version="1.4+" max-heap-size="256m"/>

           <jar href="myapp.jar"/>
           <jar href="cayenne-client-nodeps.jar"/>
           <jar href="commons-logging-1.0.4.jar"/>
           <jar href="commons-collections-3.1.jar"/>
           <jar href="commons-lang-2.1.jar"/>
           <jar href="hessian-3.0.13.jar"/>
         </resources>

         <application-desc main-class="my.app.Main"/>
    </jnlp>