<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- saved from url=(0047)http://www.eclipse.org/legal/epl/longabout.html -->
<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>3 August 2011</P>	
<H3>License</H3>

<P>The Eclipse Foundation makes available all content in this plug-in ("Content").  Unless otherwise 
indicated below, the Content is provided to you under the terms and conditions of the
Eclipse Public License Version 1.0 ("EPL").  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, "Program" 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 ("Redistributor") 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>Kernel Third Party Content</h4>
		<p>This is listed in the <a href="AboutKernel.html">Kernel's About file</a>.
		
		<h4>
			<a href="about_files/apache-v20.txt">Apache License 2.0</a>
		</h4>
		This product contains software developed by the Apache Software Foundation (<a href="http://www.apache.org">http://www.apache.org</a>).
		<ul>
		</ul>
		<h4>
			<a href="about_files/asm.txt">ASM License</a>
		</h4>
		<ul>
			<li>
				ASM 3.1.0 - binary and source is available from the <a href="http://asm.ow2.org/">ASM project</a>
			</li>
		</ul>

		<h4>
			<a href="about_files/cddl-10.txt">Common Development and Distribution License 1.0</a>
		</h4>
		<ul>
			<li>
				javax.activation 1.1.0 - <a href="http://www.springsource.com/repository/app/bundle/version/download?name=com.springsource.javax.activation&version=1.1.0&type=binary">binary</a> and <a href="http://www.springsource.com/repository/app/bundle/version/download?name=com.springsource.javax.activation&version=1.1.0&type=source">source</a> is available from the SpringSource <a href="http://www.springsource.com/repository/app/">Enterprise Bundle Repository</a>
			</li>
			<li>
				javax.ejb 3.1.1 - binary and source available from the <a href="http://glassfish.java.net/">Glassfish project</a> (Dual-licensed CDDL 1.0 or GPL 2. Virgo elects to use CDDL 1.0.)
			</li>
			<li>
				javax.el 2.2.0 - binary and source available from the <a href="http://glassfish.java.net/">Glassfish project</a> (Dual-licensed CDDL 1.0 or GPL 2. Virgo elects to use CDDL 1.0.)
			</li>
			<li>
				javax.jms 1.1.0 - binary and source available from the <a href="http://glassfish.java.net/">Glassfish project</a> (Dual-licensed CDDL 1.0 or GPL 2. Virgo elects to use CDDL 1.0.)
			</li>
			<li>
				javax.mail.glassfish 1.4.1 - binary and source are available from the <a href="http://glassfish.java.net/">GlassFish project</a>
			</li>
			<li>
				<!-- Note that the EBR states this JAR has an Apache license, but CQ 3940 says it has a CDDL license, so we assume the CQ is correct. -->
				javax.portlet 2.0.0 - <a href="http://www.springsource.com/repository/app/bundle/version/download?name=com.springsource.javax.portlet&version=2.0.0&type=binary">binary</a> and <a href="http://www.springsource.com/repository/app/bundle/version/download?name=com.springsource.javax.portlet&version=2.0.0&type=source">source</a> is available from the SpringSource <a href="http://www.springsource.com/repository/app/">Enterprise Bundle Repository</a>
			</li>
			<li>
				<!-- Refer to CQ 5019/4710 -->
				javax.servlet.jsp 2.2.0 - binary and source available from the <a href="http://glassfish.java.net/">Glassfish project</a> (Dual-licensed CDDL 1.0 or GPL 2. Virgo elects to use CDDL 1.0.)
			</li>
			<li>
				javax.servlet.jsp.jstl 1.2.0 - <a href="http://ebr.springsource.com/repository/app/bundle/version/download?name=com.springsource.javax.servlet.jsp.jstl&version=1.2.0.v20110517&type=binary">binary</a> and <a href="http://ebr.springsource.com/repository/app/bundle/version/download?name=com.springsource.javax.servlet.jsp.jstl&version=1.2.0.v20110517&type=source">source</a> is available from the SpringSource <a href="http://www.springsource.com/repository/app/">Enterprise Bundle Repository</a> (Dual-licensed CDDL or Apache License 2.0. Virgo elects to use CDDL.)
			</li>
			<li>
				javax.xml.rpc 1.1.0 - <a href="http://www.springsource.com/repository/app/bundle/version/download?name=com.springsource.javax.xml.rpc&version=1.1.0&type=binary">binary</a> and <a href="http://www.springsource.com/repository/app/bundle/version/download?name=com.springsource.javax.xml.rpc&version=1.1.0&type=source">source</a> is available from the SpringSource <a href="http://www.springsource.com/repository/app/">Enterprise Bundle Repository</a>
			</li>
			<li>
				com.sun.el 2.2.0 - binary and source are available from the <a href="http://jsp.java.net/">GlassFish JavaServer Pages project</a>
			</li>
			<li>
				org.apache.jasper.glassfish 2.2.2 - binary and source are available from the <a href="http://jsp.java.net/">GlassFish JavaServer Pages project</a>
			</li>
			<li>
				org.apache.taglibs.standard.glassfish 1.2.0 - binary and source are available from the <a href="http://jsp.java.net/">GlassFish JavaServer Pages project</a>
			</li>
		</ul>
		<h4>
			<a href="about_files/LICENSE-asm.html">New BSD License</a>
		</h4>
		<ul>
			<li>
				org.objectweb.asm 3.1.0 - binary and source are available from the
				<a href="http://asm.objectweb.org/">ASM project</a>
			</li>
		</ul>


</BODY></HTML>