<!--
 Copyright 2004 The Apache Software Foundation.
 
 Licensed 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.
-->
<Configuration xmlns="http://ws.apache.org/jaxme/namespaces/jaxme2/configuration"><Manager validatorClass="org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeValidator" qName="{http://ws.apache.org/jaxme/examples/misc/address}Address" marshallerClass="org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeSerializer" handlerClass="org.apache.ws.jaxme.examples.misc.address.impl.AddressHandler" elementInterface="org.apache.ws.jaxme.examples.misc.address.Address" elementClass="org.apache.ws.jaxme.examples.misc.address.impl.AddressImpl"/></Configuration>