<?xml version='1.0' encoding='UTF-8'?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements.  See the NOTICE.txt 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.
-->
<Context path="/pcs" docBase="/path/to/pcs-services-X.Y.war">
		
	<Parameter name="org.apache.oodt.cas.fm.url"
	    value="[FILEMGR_URL]"/>

	<Parameter name="org.apache.oodt.cas.wm.url"
	    value="[WORKFLOW_URL]"/>

	<Parameter name="org.apache.oodt.cas.rm.url"
	    value="[RESMGR_URL]"/>
	    
	<Parameter name="org.apache.oodt.pcs.ll.conf.filePath"
	    value="[PCS_HOME]/aux/pcs/pcs-ll-conf.xmnl"/>
	    
	<Parameter name="org.apache.oodt.pcs.health.crawler.conf.filePath"
	    value="[PCS_HOME]/aux/pcs/pcs-crawlers.xml"/>
	    
	<Parameter name="org.apache.oodt.pcs.health.workflow.statuses.filePath"
	    value="[PCS_HOME]/aux/pcs/pcs-workflow-statuses.xml"/>
	    
	<Parameter name="org.apache.oodt.pcs.trace.enableNonCat"
	    value="true"/>
	    
	<Parameter name="org.apache.oodt.pcs.trace.productTypeExcludeList"
	    value="TypeName1,TypeName2"/>

</Context>
