<!-- 

 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="https://chemistry.apache.org/java/developing/guide.html">OpenCMIS Client API Developer's Guide</a>.
</p>
@see org.apache.chemistry.opencmis.client.api.SessionFactory
@see org.apache.chemistry.opencmis.client.api.Session
</body>
</html>