<!-- 
	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.
-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>


	<!--
		A "hello world" service which sends a configurable response to the
		client.
		Notice how configuration dependencies are configured right here - in
		the deployment xml. No need for the service to get a configuration object
		to configure itself!
	-->
	<bean name="helloWorldHttpService"
		class="org.safehaus.asyncweb.example.helloworld.HelloWorldHttpService">

		<property name="message">
			<value>AsyncWeb says hi!</value>
		</property>

	</bean>

</beans>

