<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>About</title>
</head>
<body lang="EN-US">
<h2>About This Content</h2>

<p>&lt;<em>insert current release date here, e.g., June 5, 2007</em>&gt;</p>
<h3>License</h3>

<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise
indicated below, the Content is provided to you under the terms and conditions of the
Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>

<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
apply to your use of any object code in the Content.  Check the Redistributor's license that was
provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>


<h3>Third Party Content</h3>
<p>The Content includes items that have been sourced from third parties as set out below. If you
did not receive this Content directly from the Eclipse Foundation, the following is provided
for informational purposes only, and you should look to the Redistributor's license for
terms and conditions of use.</p>

<h4>WSDL4J 1.5.1</h4>
<p>The plug-in is accompanied by WSDL4J 1.5.1 (&quot;WSDL4J&quot;)
developed by IBM. The WSDL4J binary code can be found in the following
files located in the lib directory of the plug-in:</p>

<ul>
	<li>wsdl4j-1.5.1.jar</li>
</ul>

<p>Your use of WSDL4J is governed by the terms and conditions of the
Common Public License Version 1.0, a copy of which is located in <a
    href="about_files/license.html">about_files/cpl1.0.txt</a> and is
also available at <a
    href="http://www.opensource.org/licenses/cpl1.0.php">http://www.opensource.org/licenses/cpl1.0.php</a>.</p>

<p>Source code for WSDL4J may be obtained at <a
    href="http://sourceforge.net/projects/wsdl4j">http://sourceforge.net/projects/wsdl4j</a>.</p>

<h4>Log4J 1.2.8</h4>

<p>The plug-in includes Log4J 1.2.8 (&quot;Log4J&quot;) developed by the Apache Software Foundation as part of the Jakarta project.  Therefore:</p>

<blockquote>
This product includes software developed by the Apache Software Foundation (<a href="http://www.apache.org/">http://www.apache.org/</a>).
</blockquote>

<p>The Log4J binary code is located in the lib directory of the plug-in.</p>

<p>Log4J is:</p>

<blockquote>Copyright (c) 2004 The Apache Software Foundation. All rights reserved.</blockquote>

<p>Your use of the Log4J code is subject to the terms and conditions of the Apache Software License 1.1 which is available at
<a href="http://www.apache.org/licenses/LICENSE-1.1">http://www.apache.org/licenses/LICENSE-1.1</a>.
More specifically:</p>
<blockquote>
	1. Redistributions of source code must retain the above copyright notice, this list of<br>
	conditions and the following disclaimer.<br>
<br>
	2. Redistributions in binary form must reproduce the above copyright notice, this list of<br>
	conditions and the following disclaimer in the documentation and/or other materials<br>
	provided with the distribution.<br>
<br>
	3. The end-user documentation included with the redistribution, if any, must include the<br>
	following acknowledgment:<br>
	<blockquote>
		&quot;This product includes software developed by the Apache Software Foundation<br>
		(<a href="http://www.apache.org/">http://www.apache.org/</a>).&quot;
	</blockquote>
	Alternately, this acknowledgment may appear in the software itself, if and wherever such<br>
	third-party acknowledgments normally appear.<br>
<br>
	4. The names &quot;log4j&quot; and &quot;Apache Software Foundation&quot;<br>
	must not be used to endorse or	promote products derived from this software without prior<br>
	written permission. For written permission, please contact <a href="mailto:apache@apache.org">apache@apache.org</a>.<br>
<br>
	5. Products derived from this software may not be called &quot;Apache&quot;, nor may &quot;Apache&quot; appear<br>
	in their name, without prior written permission of the Apache Software Foundation.<br>
<br>
	THIS SOFTWARE IS PROVIDED &quot;AS IS&quot; AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<br>
	LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br>
	PURPOSE ARE	DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS<br>
	CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR<br>
	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br>
	SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON<br>
	ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,	OR TORT (INCLUDING<br>
	NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT	OF THE USE OF THIS SOFTWARE, EVEN IF<br>
	ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</blockquote>

<p>Source code Log4J is available at <a href="http://logging.apache.org/log4j/">http://logging.apache.org/log4j/</a>.</p>

<h4>Commons Logging 1.0.4</h4>
<p>The plug-in includes Commons Logging 1.0.4 (&quot;Commons Logging&quot;) developed by the Apache Software Foundation.  Therefore:</p>

<blockquote>
This product includes software developed by the Apache Software Foundation (<a href="http://www.apache.org/">http://www.apache.org/</a>).
</blockquote>

<p>The Commons Logging binary code is included with no modifications. The corresponding Commons Logging source code is located in src.zip.</p>

<p>Commons Logging is:</p>

<blockquote>Copyright (c) 1997-2005 The Apache Software Foundation. All rights reserved.</blockquote>

<p>Your use of the Commons Logging code is subject to the terms and conditions of the Apache Software License 2.0.  A copy of the license is contained
in the file <a href="about_files/LICENSE.txt">LICENSE.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.

<p>The Apache attribution <a href="about_files/NOTICE.txt">NOTICE.txt</a> file is included with the Content in accordance with 4d of the Apache License, Version 2.0.</p>

<p>Examples and documentation as well as updated source code for Commons Logging is available at <a href="http://commons.apache.org/logging/">http://commons.apache.org/logging/</a>.</p>

</body>
</html>