<!-- 

 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>
<!--
 JavaDoc package.html
-->
</head>
<body>
The OpenCMIS Client API.
<p>
This package provides interfaces and classes for accessing CMIS repositories
via an object oriented API.
<br/>
Interfaces in this package are implemented by the OpenCMIS runtime and must not be
implemented by applications.
The OpenCMIS client API depends on the OpenCMIS commons API. 
</p>
<p>
To use the OpenCMIS client API, a client needs to get a reference to the entry interface
{@link org.apache.chemistry.opencmis.client.api.SessionFactory} and then connect to the 
CMIS repository by obtaining a session to the repository from  the {@code SessionFactory}.
The way to get a {@code SessionFactory} instance depends on the clients runtime:
Usually this will be done via JNDI lookup in a J2EE runtime or a service lookup in a OSGi Runtime.
</p>
<p>
All operations that require a round-trip to the back-end will do that synchronously,
causing the client to be blocked during that call.</p>

<h2>Usage of the API</h2>
<p>
See <a href="http://chemistry.apache.org/java/developing/guide.html">OpenCMIS Client API Developer's Guide</a>.
</p>
<p>
@see org.apache.chemistry.opencmis.client.api.SessionFactory
@see org.apache.chemistry.opencmis.client.api.Session
</p>
</body>
</html>