<?xml version="1.0" encoding="UTF-8"?>
<!--
                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.
        -->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sec="http://cxf.apache.org/configuration/security" xmlns:http="http://cxf.apache.org/transports/http/configuration" xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="            http://cxf.apache.org/jaxws                                                http://cxf.apache.org/schemas/jaxws.xsd                    http://cxf.apache.org/configuration/security                       http://cxf.apache.org/schemas/configuration/security.xsd            http://cxf.apache.org/transports/http/configuration               http://cxf.apache.org/schemas/configuration/http-conf.xsd            http://cxf.apache.org/transports/http-jetty/configuration               http://cxf.apache.org/schemas/configuration/http-jetty.xsd            http://www.springframework.org/schema/beans               http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
    <import resource="classpath:META-INF/cxf/cxf.xml"/>
    <httpj:engine-factory bus="cxf">
        <httpj:engine port="${testutil.ports.JsHttpRequestTest}">
            <httpj:handlers>
                <bean class="org.eclipse.jetty.server.handler.ContextHandler">
                    <property name="contextPath" value="/"/>
                    <property name="handler">
                        <bean class="org.eclipse.jetty.server.handler.ResourceHandler">
                            <property name="baseResource">
                                <bean class="org.eclipse.jetty.util.resource.FileResource">
                                    <constructor-arg value="${staticResourceURL}"/>
                                </bean>
                            </property>
                            <property name="mimeTypes">
                                <bean class="org.eclipse.jetty.http.MimeTypes">
                                    <property name="mimeMap">
                                        <map>
                                            <entry key="html">
                                                <value>text/html; charset="utf-8"</value>
                                            </entry>
                                        </map>
                                    </property>
                                </bean>
                            </property>
                        </bean>
                    </property>
                </bean>
                <bean class="org.eclipse.jetty.server.handler.DefaultHandler"/>
            </httpj:handlers>
        </httpj:engine>
    </httpj:engine-factory>
    <jaxws:endpoint id="greeter-service-endpoint" implementor="org.apache.hello_world_xml_http.wrapped.GreeterImpl" address="http://localhost:${testutil.ports.JsHttpRequestTest}/Greeter">
        </jaxws:endpoint>
</beans>
