cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aadamc...@apache.org
Subject svn commit: r488202 [6/19] - in /incubator/cayenne/main/trunk/assembly/cayenne-generic: ./ src/doc/ src/doc/confluence/ src/doc/confluence/Documentation/ src/doc/confluence/Documentation/JPA Guide/ src/doc/confluence/Documentation/JPA Guide/JPA Agent/ ...
Date Mon, 18 Dec 2006 10:24:42 GMT
Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20Authentication/index.html?view=auto&rev=488202
==============================================================================
--- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html (added)
+++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html Mon Dec 18 02:24:19 2006
@@ -0,0 +1,205 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial Authentication</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://incubator.apache.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Tutorial Authentication</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html">Remote Object Persistence Tutorial Setup</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a><ul>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><p>You probably don't want everybody in the world to connect to your service and access (and update!) arbitrary data. The first step in securing Cayenne service is implementing client authentication. The easiest way to do it is to delegate the authentication task to the web container that is running the service. HessianConnection used in the <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html" title="Remote Object Persistence Tutorial Client Code">previous chapter</a> supports such authentication on the client side.</p>
+
+<h3><a name="RemoteObjectPersistenceTutorialAuthentication-ConfiguringJettyLauncher"></a>Configuring JettyLauncher</h3>
+
+<p>First we need to setup support for BASIC authentication in Jetty. </p>
+
+<ul>
+	<li>In <tt>cayenne-tutorial</tt> project folder create a file called <tt>"jetty-realm.properties"</tt> with the following line of text:</li>
+</ul>
+
+
+<div class="preformatted"><div class="preformattedContent">
+<pre>cayenne-user: secret,cayenne-service-user</pre>
+</div></div>
+
+<p>This file will store our user database. In each line the first word is a user name, the second - password, the rest are the roles of this user. So we've created a single user with login id "cayenne-user", password "secret" and "cayenne-service-user" role.</p>
+
+<ul>
+	<li>In the same folder create another file called "jetty-run-config.xml" with the following contents:</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>jetty-run-config.xml</b></div><div class="codeContent">
+<pre class="code-java">&lt;?xml version=<span class="code-quote">"1.0"</span>  encoding=<span class="code-quote">"UTF-8"</span>?&gt;
+&lt;!DOCTYPE Configure PUBLIC <span class="code-quote">"-<span class="code-comment">//Mort Bay Consulting//DTD Configure//EN"</span> <span class="code-quote">"http://jetty.mortbay.org/configure.dtd"</span>&gt;
+</span>
+&lt;Configure class=<span class="code-quote">"org.mortbay.jetty.Server"</span>&gt;
+
+    &lt;Call name=<span class="code-quote">"addListener"</span>&gt;
+        &lt;Arg&gt;
+            &lt;New class=<span class="code-quote">"org.mortbay.http.SocketListener"</span>&gt;
+                &lt;Set name=<span class="code-quote">"Port"</span>&gt;&lt;SystemProperty name=<span class="code-quote">"jetty.port"</span> <span class="code-keyword">default</span>=<span class="code-quote">"8080"</span>/&gt;
+                &lt;/Set&gt;
+                &lt;Set name=<span class="code-quote">"MinThreads"</span>&gt;2&lt;/Set&gt;
+                &lt;Set name=<span class="code-quote">"MaxThreads"</span>&gt;100&lt;/Set&gt;
+                &lt;Set name=<span class="code-quote">"MaxIdleTimeMs"</span>&gt;30000&lt;/Set&gt;
+                &lt;Set name=<span class="code-quote">"LowResourcePersistTimeMs"</span>&gt;5000&lt;/Set&gt;
+                &lt;Set name=<span class="code-quote">"PoolName"</span>&gt;Listener&lt;/Set&gt;
+                &lt;Set name=<span class="code-quote">"ConfidentialPort"</span>&gt;8443&lt;/Set&gt;
+                &lt;Set name=<span class="code-quote">"IntegralPort"</span>&gt;8443&lt;/Set&gt;
+            &lt;/New&gt;
+        &lt;/Arg&gt;
+    &lt;/Call&gt;
+
+    &lt;Set name=<span class="code-quote">"WebApplicationConfigurationClassNames"</span>&gt;
+        &lt;Array type=<span class="code-quote">"java.lang.<span class="code-object">String</span>"</span>&gt;
+            &lt;Item&gt;org.mortbay.jetty.servlet.XMLConfiguration&lt;/Item&gt;
+        &lt;/Array&gt;
+    &lt;/Set&gt;
+	
+    &lt;Call name=<span class="code-quote">"addRealm"</span>&gt;
+        &lt;Arg&gt;
+            &lt;New class=<span class="code-quote">"org.mortbay.http.HashUserRealm"</span>&gt;
+                &lt;Arg&gt;Cayenne Realm&lt;/Arg&gt;
+                &lt;Arg&gt;&lt;SystemProperty name=<span class="code-quote">"user.dir"</span> <span class="code-keyword">default</span>=<span class="code-quote">"."</span>/&gt;/jetty-realm.properties&lt;/Arg&gt;
+            &lt;/New&gt;
+        &lt;/Arg&gt;
+    &lt;/Call&gt;
+
+    &lt;Call name=<span class="code-quote">"addWebApplication"</span>&gt;
+        &lt;Arg&gt;/&lt;/Arg&gt;
+        &lt;Arg&gt;webapp&lt;/Arg&gt;
+    &lt;/Call&gt;
+&lt;/Configure&gt;</pre>
+</div></div>
+
+<p>This file is a Jetty-specific descriptor that emulates your existing JettyLauncher setup with one extra twist - an authentication realm.</p>
+
+<ul>
+	<li>In Eclipse go to <tt>"Run &gt; Run..."</tt> and select "cayenne-tutorial" Jetty configuration.</li>
+	<li>Select a "Use a Jetty XML Configuration File" radio button and navigate to "jetty-run-config.xml" file that we just created:</li>
+</ul>
+
+
+<p><img src="custom-jetty.jpg" align="absmiddle" border="0" /></p>
+
+<ul>
+	<li>Click "Apply" and close the dialog.</li>
+</ul>
+
+
+<p>As you may have guessed the procedure above is Jetty-specific and will be different on other servers (such as Tomcat) or with other authentication mechanisms (such as database realms).</p>
+
+<h3><a name="RemoteObjectPersistenceTutorialAuthentication-ConfiguringSecurityConstraints"></a>Configuring Security Constraints</h3>
+
+<ul>
+	<li>open <tt>web.xml</tt> and add security constraints for the web service, just like you would do in a normal web application. The following XML has to be added just before 	the closing "web-app" tag:</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>"web.xml"</b></div><div class="codeContent">
+<pre class="code-java">&lt;security-constraint&gt;
+        &lt;web-resource-collection&gt;
+            &lt;web-resource-name&gt;CayenneService&lt;/web-resource-name&gt;
+            &lt;url-pattern&gt;/cayenne-service&lt;/url-pattern&gt;
+        &lt;/web-resource-collection&gt;
+        &lt;auth-constraint&gt;
+            &lt;role-name&gt;cayenne-service-user&lt;/role-name&gt;
+        &lt;/auth-constraint&gt;
+    &lt;/security-constraint&gt;
+    
+    &lt;login-config&gt;
+        &lt;auth-method&gt;BASIC&lt;/auth-method&gt;
+        &lt;realm-name&gt;Cayenne Realm&lt;/realm-name&gt;
+    &lt;/login-config&gt;
+	
+    &lt;security-role&gt;
+        &lt;role-name&gt;cayenne-service-user&lt;/role-name&gt;
+    &lt;/security-role&gt;</pre>
+</div></div>
+
+<ul>
+	<li>Save the file, shut down and restart the server and try to run the client. This time you should get an exception similar to this one:</li>
+</ul>
+
+
+<div class="preformatted"><div class="preformattedContent">
+<pre>Exception in thread "main" org.apache.cayenne.CayenneRuntimeException: [v.2.0.1 September 23 2006] Error establishing remote session. URL - http://localhost:8080/cayenne-service
+	at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:257)
+	at org.apache.cayenne.remote.hessian.HessianConnection.getServerEventBridge(HessianConnection.java:147)
+	at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:254)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:115)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:105)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:101)</pre>
+</div></div>
+
+<ul>
+	<li>Go to the client Main class, and change the line that creates ClientConnection to take user name and password:</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>Main.java</b></div><div class="codeContent">
+<pre class="code-java">ClientConnection connection = <span class="code-keyword">new</span> HessianConnection(<span class="code-quote">"http:<span class="code-comment">//localhost:8080/cayenne-service"</span>, 
+</span>   <span class="code-quote">"cayenne-user"</span>,
+   <span class="code-quote">"secret"</span>, 
+   <span class="code-keyword">null</span>);</pre>
+</div></div>
+
+<p>Now if you start the client again, it should successfully connect to the server and print the output similar to what <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html" title="Remote Object Persistence Tutorial Client Code">we've seen before</a>. Of course in a real application you might want secure the autentication with SSL. The technique above still applies, but you'll need to do some setup on the server. Consult your server documentation on how to enable HTTPS. On the client you would simply replace "http://" with "https://" in the server URL.</p>
+
+<p>You are done with the tutorial!</p>
+</div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20Client%20Code/index.html?view=auto&rev=488202
==============================================================================
--- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html (added)
+++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html Mon Dec 18 02:24:19 2006
@@ -0,0 +1,197 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial Client Code</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://incubator.apache.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Tutorial Client Code</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html">Remote Object Persistence Tutorial Setup</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h3><a name="RemoteObjectPersistenceTutorialClientCode-StartingCommandLineClient"></a>Starting Command Line Client</h3>
+
+<p>One of the benefits of Cayenne remote object persistence technology is that the client persistence code uses the same API as the server code. We will demonstrate this by porting the command-line Cayenne application developed as a part of <a href="../../../../Documentation/User Guide/Quick Start/index.html" title="Quick Start">Quick Start</a> tutorial to a remote client.</p>
+
+
+<ul>
+	<li>Go to <tt>cayenne-tutorial-client</tt> project in Eclipse and create a new class called "Main" in <tt>cayenne.tutorial.client</tt> package.</li>
+	<li>Now open <tt>cayenne.tutorial.Main.java</tt> file in <tt>cayenne-tutorial</tt> and copy all contents except for the first line (i.e. skip the package declaration) and paste it to the client main class created above. You will see a bunch of errors in Eclipse. Don't worry about them - we'll address them as we go. Here is how a new Main class may look like in Eclipse:</li>
+</ul>
+
+
+<p><img src="main-errors.jpg" align="absmiddle" border="0" /></p>
+
+<h3><a name="RemoteObjectPersistenceTutorialClientCode-ClientMigrationStrategy"></a>Client Migration Strategy</h3>
+
+<p>An explanation of the migration strategy is due before we go further. For simplicity we will call (somewhat inaccurately) the original tutorial code "server code" and the resulting remote client - "client code". There are the following differences between the server and the client persistence code:</p>
+
+<ol>
+	<li>Attaching to the Cayenne stack is done differently.</li>
+	<li>Server code uses DataContext, while client uses CayenneContext</li>
+	<li>Server and client are using different sets of persistent classes.</li>
+</ol>
+
+
+<p>We will discuss these differences in detail below. Here we will just note that the first two items do not significantly affect the code portability (by "portability" we mean the ability to reuse the same persistence code on the client and on the server). The trick is to use interfaces common to the server and the client, but provide different implementations. However the last issue (already mentioned earlier) complicates code reuse and portability. Still it is certainly not a show-stopper.</p>
+
+<h3><a name="RemoteObjectPersistenceTutorialClientCode-BuildingtheStack"></a>Building the Stack</h3>
+
+<p>Traditionally Cayenne initializes the shared stack (everything below the DataContext) using the information from cayenne.xml descriptor. On the client there are no descriptors present, so a simple API call is normally used.</p>
+
+<ul>
+	<li>Add the following code in the beginning of the <tt>main</tt> method, and press "Ctrl-Shift-O" to add missing imports (this would be "Cmd-Shift-O" on Mac OS X):</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>Main.java</b></div><div class="codeContent">
+<pre class="code-java">ClientConnection connection = <span class="code-keyword">new</span> HessianConnection(<span class="code-quote">"http:<span class="code-comment">//localhost:8080/cayenne-service"</span>);
+</span>DataChannel channel = <span class="code-keyword">new</span> ClientChannel(connection);</pre>
+</div></div>
+
+<p>This is all you need to connect to the remote service. Note that DataChannel abstraction is used on the server as well, it is just not as visible - DataDomain implements DataChannel.</p>
+
+<h3><a name="RemoteObjectPersistenceTutorialClientCode-XyzContext"></a>XyzContext</h3>
+
+<p>There is no DataContext on the client (hence Eclipse errors highlighting the attempts to use it). So let's convert the code to a portable code that would work on both client and server the same way. This is done by using <tt><b>ObjectContext</b></tt> interface that is implemented by DataContext and also by <tt><b>CayenneContext</b></tt> that we should be using on the client.</p>
+
+<ul>
+	<li>Replace this line</li>
+</ul>
+
+
+<div class="code"><div class="codeContent">
+<pre class="code-java">DataContext context = DataContext.createDataContext();</pre>
+</div></div>
+
+<p>with this</p>
+
+<div class="code"><div class="codeContent">
+<pre class="code-java">ObjectContext context = <span class="code-keyword">new</span> CayenneContext(channel);</pre>
+</div></div>
+
+<ul>
+	<li>Now change the signature of all methods that previously accepted DataContext to take ObjectContext instead. Now we are down to just one error. We just replaced concrete class with the interface, but did not change any code. <em>Note that we could've used ObjectContext in the server code as well.</em></li>
+</ul>
+
+
+<h3><a name="RemoteObjectPersistenceTutorialClientCode-Reconcilebusinesslogic"></a>Reconcile business logic</h3>
+
+<p>The only remaining error is caused by this line:</p>
+
+<div class="code"><div class="codeContent">
+<pre class="code-java">picasso.setDateOfBirthString(<span class="code-quote">"18811025"</span>);</pre>
+</div></div>
+
+<p>As was mentioned earlier, this piece needs improvement in Cayenne. As of release 1.2 the client and the server classes, while sharing all properties, do not share the business logic. So it has to be copy/paste, and this is what we are going to do.</p>
+
+<ul>
+	<li>Open server <tt>cayenne.tutorial.Artist.java</tt> class and copy the class contents (everything inside <tt>public class Artist extends _Artist {..</tt>}). Paste them to the client <tt>cayenne.tutorial.client.Artist.java</tt> and save the file. The last error in the Main class should now be cleared.</li>
+</ul>
+
+
+<h3><a name="RemoteObjectPersistenceTutorialClientCode-RunningtheClient"></a>Running the Client</h3>
+
+<ul>
+	<li>Start the server in Eclipse using JettyLauncher.</li>
+	<li>Right click the <tt>cayenne.tutorial.client.Main</tt> in Eclipse and select <tt>"Run As.. &gt; Java Application</tt>. You should see a bunch of logs on the client and the server Eclipse consoles showing that the client has connected and executed a number of operations. Specifically the client output may look like this, displaying messages sent to the server:</li>
+</ul>
+
+
+<div class="preformatted"><div class="preformattedContent">
+<pre>ul 4, 2006 2:18:23 PM org.apache.cayenne.remote.hessian.HessianConnection connect
+INFO: Connecting to [http://localhost:8080/cayenne-service] - dedicated session.
+Jul 4, 2006 2:18:24 PM org.apache.cayenne.remote.hessian.HessianConnection connect
+INFO: === Connected, session: org.apache.cayenne.remote.RemoteSession@7918f0 - took 672 ms.
+Jul 4, 2006 2:18:24 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: --- Message 0: Bootstrap
+Jul 4, 2006 2:18:24 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: === Message 0: Bootstrap done - took 235 ms.
+Jul 4, 2006 2:18:24 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: --- Message 1: Query
+Jul 4, 2006 2:18:27 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: === Message 1: Query done - took 2588 ms.
+Jul 4, 2006 2:18:27 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: --- Message 2: flush-cascade-sync
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: === Message 2: flush-cascade-sync done - took 608 ms.
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: --- Message 3: Query
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: === Message 3: Query done - took 220 ms.
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: --- Message 4: Query
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: === Message 4: Query done - took 40 ms.
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: --- Message 5: Query
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: === Message 5: Query done - took 94 ms.
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: --- Message 6: Query
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: === Message 6: Query done - took 81 ms.
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: --- Message 7: flush-cascade-sync
+Jul 4, 2006 2:18:28 PM org.apache.cayenne.remote.BaseConnection sendMessage
+INFO: === Message 7: flush-cascade-sync done - took 155 ms.</pre>
+</div></div>
+
+<p>You are done with a basic client!</p>
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html" title="Remote Object Persistence Tutorial Authentication">Remote Object Persistence Tutorial Authentication</a></b></p>
+<hr />
+</div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/main-errors.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20Client%20Code/main-errors.jpg?view=auto&rev=488202
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/main-errors.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/client-class-generator.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20Client%20Project/client-class-generator.jpg?view=auto&rev=488202
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/client-class-generator.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/client-package.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20Client%20Project/client-package.jpg?view=auto&rev=488202
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/client-package.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/eclipse-client-libs.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20Client%20Project/eclipse-client-libs.jpg?view=auto&rev=488202
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/eclipse-client-libs.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20Client%20Project/index.html?view=auto&rev=488202
==============================================================================
--- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html (added)
+++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html Mon Dec 18 02:24:19 2006
@@ -0,0 +1,118 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial Client Project</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://incubator.apache.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Tutorial Client Project</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html">Remote Object Persistence Tutorial Setup</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent">
+<h3><a name="RemoteObjectPersistenceTutorialClientProject-CreateaClientProject"></a>Create a Client Project</h3>
+
+<p><em>Creation of a new Eclipse project has been discussed in some details <a href="../../../../Documentation/User Guide/Quick Start/Tutorial Setup/index.html" title="Tutorial Setup">here</a>, so we will omit the screenshots for the common parts.</em></p>
+
+<ul>
+	<li>In Eclipse go to <tt>"File &gt; New &gt; Project"</tt>. Select a <tt>"Java Project"</tt> for the project type and click "Next".</li>
+	<li>Enter <tt>"cayenne-tutorial-client"</tt> for the project name, select "Create separate source and output folders" radio button and click "Next".</li>
+	<li>On the next ("Java Settings") screen go to the "Libraries" tab and click "Add External Jar" button on the right to add  the following .jar files needed by the client:
+	<ul>
+		<li><tt>cayenne-client-nodeps.jar</tt>, located in the "lib" directory of the Cayenne installation.</li>
+		<li><tt>hessian.jar</tt>, version 3.0.13, that can be downloaded from <span class="nobr"><a href="http://www.caucho.com/hessian/" title="Visit page outside Confluence" rel="nofollow">here<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</li>
+		<li><tt>commons-logging.jar</tt>, version 1.0.4 or newer, that can be downloaded from <span class="nobr"><a href="http://jakarta.apache.org/commons/logging/" title="Visit page outside Confluence" rel="nofollow">here<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</li>
+		<li><tt>commons-lang.jar</tt>, version 2.1 or newer, that can be downloaded from <span class="nobr"><a href="http://jakarta.apache.org/commons/lang/" title="Visit page outside Confluence" rel="nofollow">here<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</li>
+		<li><tt>commons-collections.jar</tt>, version 3.1 or newer, that can be downloaded from <span class="nobr"><a href="http://jakarta.apache.org/commons/collections/" title="Visit page outside Confluence" rel="nofollow">here<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>:</li>
+	</ul>
+	</li>
+</ul>
+
+
+<p><img src="eclipse-client-libs.jpg" align="absmiddle" border="0" /></p>
+
+<ul>
+	<li>When done click "Finish" and the new project should appear in Eclipse.</li>
+</ul>
+
+
+<h3><a name="RemoteObjectPersistenceTutorialClientProject-ClientClassGeneration"></a>Client Class Generation</h3>
+
+<p>Client classes are a lightweight version of server-side DataObjects. They are generated using a separate template. Let's lace them in a new client project.</p>
+
+<ul>
+	<li><a href="../../../../Documentation/Modeler Guide/Introduction to CayenneModeler/Running CayenneModeler/index.html" title="Running CayenneModeler">Start CayenneModeler</a> and open <tt>"cayenne-tutorial/src/cayenne.xml"</tt> file (note that the mapping files stay in the server project; client will obtain mapping information from the server).</li>
+	<li>Select an "UntitledDomainMap" DataMap and check "Allow Client Entities"</li>
+	<li>Enter "cayenne.tutorial.client" for the "Client Java Package" and click an "Update.." button next to it to refresh the client package of all entities.</li>
+</ul>
+
+
+<p><img src="client-package.jpg" align="absmiddle" border="0" /></p>
+
+<ul>
+	<li>Now select "Tools &gt; Generate Classes" menu.</li>
+	<li>For "Type" select "Client Persistent Objects" (this will use a different generation template).</li>
+	<li>For the output directory select "cayenne-tutorial-client/src" directory of your <b>client</b> Eclipse project.</li>
+	<li>Click "Generate".</li>
+</ul>
+
+
+<p><img src="client-class-generator.jpg" align="absmiddle" border="0" /></p>
+
+<p>Now go back to Eclipse, right click on "cayenne-tutorial-client" project and select "Refresh" - you should see a pair of classes generated for each mapped entity. Note that you should not modify the classes whose names start with "_" (underscore), as they will be replaced on subsequent generator runs. Instead all custom logic should be placed in their subclasses located in "cayenne.tutorial" package - those will never be overwritten by the class generator.</p>
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html" title="Remote Object Persistence Tutorial WebService">Remote Object Persistence Tutorial WebService</a></b></p>
+<hr /></div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20Setup/index.html?view=auto&rev=488202
==============================================================================
--- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html (added)
+++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html Mon Dec 18 02:24:19 2006
@@ -0,0 +1,103 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial Setup</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://incubator.apache.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Tutorial Setup</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html">Remote Object Persistence Tutorial Setup</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><p>This tutorial starts where the <a href="../../../../Documentation/User Guide/Quick Start/index.html" title="Quick Start">Quick Start</a> left off. All the code that is required however is in this tutorial so you don't have to have finished that tutorial to do this one. If you'd like to start here you are able to without reference to the other tutorial.</p>
+
+<h3><a name="RemoteObjectPersistenceTutorialSetup-SetupfromScratch"></a>Setup from Scratch</h3>
+
+<ul>
+	<li>Install Maven 2 (<span class="nobr"><a href="http://maven.apache.org" title="Visit page outside Confluence" rel="nofollow">http://maven.apache.org<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>)</li>
+	<li>Get the code from <span class="nobr"><a href="https://svn.apache.org/repos/asf/incubator/cayenne/main/trunk/tutorials/quick-start-rop" title="Visit page outside Confluence" rel="nofollow">https://svn.apache.org/repos/asf/incubator/cayenne/main/trunk/tutorials/quick-start-rop<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> with svn, i.e.
+	<ul>
+		<li>svn co <span class="nobr"><a href="https://svn.apache.org/repos/asf/incubator/cayenne/main/trunk/tutorials/quick-start-rop" title="Visit page outside Confluence" rel="nofollow">https://svn.apache.org/repos/asf/incubator/cayenne/main/trunk/tutorials/quick-start-rop<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
+	</ul>
+	</li>
+	<li>Build Eclipse config files (or your favorite IDE)
+	<ul>
+		<li>cd quick-start-rop</li>
+		<li>mvn eclipse:eclipse
+		<ul>
+			<li><span class="nobr"><a href="http://maven.apache.org/guides/mini/guide-ide-eclipse.html" title="Visit page outside Confluence" rel="nofollow">Eclipse Info<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
+			<li><span class="nobr"><a href="http://maven.apache.org/guides/mini/guide-ide-idea.html" title="Visit page outside Confluence" rel="nofollow">IDEA Info<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
+			<li><span class="nobr"><a href="http://maven.apache.org/guides/mini/guide-ide-netbeans/guide-ide-netbeans.html" title="Visit page outside Confluence" rel="nofollow">NetBeans Info<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
+		</ul>
+		</li>
+	</ul>
+	</li>
+	<li><a href="../../../../Documentation/Modeler Guide/Introduction to CayenneModeler/Running CayenneModeler/index.html" title="Running CayenneModeler">Start CayenneModeler</a> and <a href="../../../../Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html" title="Tutorial Starting Mapping Project">add <tt>derby.jar</tt> to the modeler CLASSPATH</a>. Open <tt>"cayenne-rop-server-tutorial/src/main/resources/cayenne.xml"</tt> in CayenneModeler and <a href="../../../../Documentation/User Guide/Quick Start/Tutorial Generate Database and Java Classes/index.html" title="Tutorial Generate Database and Java Classes">generate a database schema</a> (skip the Java class generation part, just do the database).
+	<ul>
+		<li>You might also want to change the path to the db, its currently set to /tmp/testdb, which works fine on *nix but not so nicely on Windows.</li>
+	</ul>
+	</li>
+	<li>From the cayenne-rop-server-tutorial directory start jetty with the cayenne bits deployed
+	<ul>
+		<li>mvn jetty:run-war</li>
+	</ul>
+	</li>
+	<li>You are now running the Cayenne ROP server app</li>
+</ul>
+
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html" title="Remote Object Persistence Tutorial Client Project">Remote Object Persistence Tutorial Client Project</a></b></p>
+<hr /></div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20WebService/index.html?view=auto&rev=488202
==============================================================================
--- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html (added)
+++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html Mon Dec 18 02:24:19 2006
@@ -0,0 +1,148 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial WebService</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://incubator.apache.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Tutorial WebService</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html">Remote Object Persistence Tutorial Setup</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h3><a name="RemoteObjectPersistenceTutorialWebService-DeployingaWebService"></a>Deploying a Web Service</h3>
+
+<p>Now lets get back to the <tt>"cayenne-tutorial"</tt> project that contains a web application. </p>
+
+<ul>
+	<li>Add <tt>hessian.jar</tt> to the list of project libraries by right clicking the <tt>"cayenne-tutorial"</tt> project, selecting <tt>"Java Build Path &gt; Libraries"</tt> and clicking "Add External Jar" button on the right. As a reminder, Hessian jar can be downloaded <span class="nobr"><a href="http://www.caucho.com/hessian/" title="Visit page outside Confluence" rel="nofollow">from here<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> if you haven't done this already.</li>
+</ul>
+
+
+<ul>
+	<li>Cayenne web service is specified declaratively in <tt>web.xml</tt>. It is simply a servlet - <tt>org.objectstyle.cayenne.remote.hessian.service.HessianServlet</tt>. No extra code is needed on the server. Open <tt>cayenne-tutorial/webapp/WEB-INF/web.xml</tt> in Eclipse and add the servlet section.</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>web.xml</b></div><div class="codeContent">
+<pre class="code-java">...
+&lt;servlet&gt;
+    &lt;servlet-name&gt;cayenne-service&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.apache.cayenne.remote.hessian.service.HessianServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;cayenne-service&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/cayenne-service&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;</pre>
+</div></div>
+
+<ul>
+	<li>Since our web application serves JSP files as well, you also need to remap Cayenne Filter setup earlier, so that it only applies to JSPs. The resulting complete <tt>web.xml</tt> will look like this:</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>web.xml</b></div><div class="codeContent">
+<pre class="code-java">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"utf-8"</span>?&gt;
+ &lt;!DOCTYPE web-app
+   PUBLIC <span class="code-quote">"-<span class="code-comment">//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"</span>
+</span>   <span class="code-quote">"http:<span class="code-comment">//java.sun.com/dtd/web-app_2_3.dtd"</span>&gt;
+</span>&lt;web-app&gt;
+    &lt;display-name&gt;Cayenne Tutorial&lt;/display-name&gt;
+    &lt;filter&gt;
+        &lt;filter-name&gt;CayenneFilter&lt;/filter-name&gt;
+        &lt;filter-class&gt;org.apache.cayenne.conf.WebApplicationContextFilter&lt;/filter-class&gt;
+    &lt;/filter&gt;
+    &lt;filter-mapping&gt;
+        &lt;filter-name&gt;CayenneFilter&lt;/filter-name&gt;
+        &lt;url-pattern&gt;/&lt;/url-pattern&gt;
+    &lt;/filter-mapping&gt;
+    &lt;filter-mapping&gt;
+        &lt;filter-name&gt;CayenneFilter&lt;/filter-name&gt;
+        &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
+    &lt;/filter-mapping&gt;
+    
+    &lt;servlet&gt;
+        &lt;servlet-name&gt;cayenne-service&lt;/servlet-name&gt;
+        &lt;servlet-class&gt;org.apache.cayenne.remote.hessian.service.HessianServlet&lt;/servlet-class&gt;
+    &lt;/servlet&gt;
+    &lt;servlet-mapping&gt;
+        &lt;servlet-name&gt;cayenne-service&lt;/servlet-name&gt;
+        &lt;url-pattern&gt;/cayenne-service&lt;/url-pattern&gt;
+    &lt;/servlet-mapping&gt;	
+	
+    &lt;welcome-file-list&gt;
+        &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
+    &lt;/welcome-file-list&gt;
+&lt;/web-app&gt;</pre>
+</div></div>
+
+<ul>
+	<li>Now you can run the web application (that contains a web service) with JettyLauncher, as described <a href="../../../../Documentation/User Guide/Quick Start/Tutorial Webapp/index.html" title="Tutorial Webapp">before</a>.</li>
+</ul>
+
+
+<ul>
+	<li>Web application URLs (e.g. <span class="nobr"><a href="http://localhost:8080/" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>) should continue to work as before, but let's try the service URL: <span class="nobr"><a href="http://localhost:8080/cayenne-service" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/cayenne-service<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. You will see "Hessian Requires POST" error message in the browser, that means that the service is alive, but you need a client other than the web browser to access it.</li>
+</ul>
+
+
+<p>Now you can shutdown the web application in Eclipse.</p>
+
+<h3><a name="RemoteObjectPersistenceTutorialWebService-FinalStep..."></a>Final Step...</h3>
+
+<p>As of version 1.2, both client and server persistent classes need to be present <b>on the server</b> (client of course only needs client classes). This is a minor inconvenience that will be addressed in the future releases. To satisfy this requirement, right click the <tt>"cayenne-tutorial"</tt> project, select <tt>"Java Build Path &gt; Projects &gt; Add..."</tt> and add <tt>cayenne-tutorial-client</tt> as a project dependency.</p>
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html" title="Remote Object Persistence Tutorial Client Code">Remote Object Persistence Tutorial Client Code</a></b></p>
+<hr /></div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/index.html?view=auto&rev=488202
==============================================================================
--- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html (added)
+++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html Mon Dec 18 02:24:19 2006
@@ -0,0 +1,78 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Quick Start</title>
+    <style type="text/css">@import "../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://incubator.apache.org/cayenne/"><img src="../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Quick Start</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a><ul>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html">Remote Object Persistence Tutorial Setup</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a></li>
+</ul>
+</li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent">
+<p>This tutorial is an extension of a <a href="../../../Documentation/User Guide/Quick Start/index.html" title="Quick Start">Quick Start</a> Cayenne tutorial, showing how to deploy an existing mapping project as a Cayenne web service, and then write a command-line client to access the service. Note that in most real applications the client will be a Swing or SWT GUI application. We are showing the command line example to avoid dealing with UI details and concentrate on Cayenne API.</p>
+
+<p>Full tutorial source code in a form of Eclipse project is distributed with Cayenne (see <tt>"src/tutorials/quick-start-rop"</tt> folder).</p>
+
+<h3><a name="RemoteObjectPersistenceQuickStart-TutorialContents"></a>Tutorial Contents </h3>
+
+<ul>
+	<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html" title="Remote Object Persistence Tutorial Setup">Preparation...</a></li>
+	<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html" title="Remote Object Persistence Tutorial Client Project">Starting client project...</a></li>
+	<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html" title="Remote Object Persistence Tutorial WebService">Setting up Hessian web service...</a></li>
+	<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html" title="Remote Object Persistence Tutorial Client Code">Porting existing code to connnect to a web service instead of a database...</a></li>
+	<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html" title="Remote Object Persistence Tutorial Authentication">Adding BASIC authentication...</a></li>
+</ul>
+
+
+</div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Security/index.html?view=auto&rev=488202
==============================================================================
--- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html (added)
+++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html Mon Dec 18 02:24:19 2006
@@ -0,0 +1,64 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Security</title>
+    <style type="text/css">@import "../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://incubator.apache.org/cayenne/"><img src="../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Security</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a><ul>
+</ul>
+</li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h3><a name="RemoteObjectPersistenceSecurity-SecuringCayenneWebServiceAccess"></a>Securing Cayenne Web Service Access</h3>
+
+<ul>
+	<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html" title="Remote Object Persistence Tutorial Authentication">Use HTTP(S) BASIC authentication</a> to authenticate the clients.</li>
+	<li>Explicitly check "Not for Client Use" for entities that should stay server-only.</li>
+	<li>Subclass <tt>org.apache.cayenne.remote.hessian.service.HessianServlet</tt> for user-defined fine-grained access control.</li>
+</ul>
+</div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote%20Object%20Persistence%20Guide/index.html?view=auto&rev=488202
==============================================================================
--- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/index.html (added)
+++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/index.html Mon Dec 18 02:24:19 2006
@@ -0,0 +1,70 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Guide</title>
+    <style type="text/css">@import "../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://incubator.apache.org/cayenne/"><img src="../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Guide</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent">
+<ol>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html" title="Remote Object Persistence Introduction">Introduction</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html" title="Remote Object Persistence Features">Main Features</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html" title="Remote Object Persistence Installation">Installation and Dependencies</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html" title="Remote Object Persistence Quick Start">Quick Start</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html" title="Remote Object Persistence Coding Server">Coding the Server</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html" title="Remote Object Persistence Coding Client">Coding the Client</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html" title="Remote Object Persistence CWS Deployment">Deploying Cayenne Web Service</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html" title="Remote Object Persistence Client Deployment">Deploying the Client</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html" title="Remote Object Persistence Security">Security</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html" title="Remote Object Persistence Comparison">Comparison with Other Remote Technologies</a></li>
+	<li><a href="../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html" title="Remote Object Persistence Limitations">Current Limitations</a></li>
+</ol>
+
+</div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Remote Object Persistence Guide/index.html
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message