blob: 22e74b336f976295ffe8761cae7713ca95e353fd [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (C) 2010-2012 The University of Manchester See the file "LICENSE"
for license terms. -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:cxf="http://cxf.apache.org/core"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<description>
The Taverna Server bean, plus supporting configuration.
</description>
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="providers.xml" />
<context:annotation-config />
<context:component-scan base-package="org.taverna.server" />
<bean id="servletContextPropertyConfigurer"
class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="localOverride" value="true" />
<property name="order" value="0" />
<property name="location" value="/WEB-INF/tavernaserver.properties" />
</bean>
<jaxws:server id="master_SOAP"
serviceClass="org.taverna.server.master.TavernaServer" address="/soap">
<jaxws:serviceBean>
<ref bean="webapp" />
</jaxws:serviceBean>
<jaxws:properties>
<entry key="mtom-enabled" value="true" />
</jaxws:properties>
<!-- <jaxws:dataBinding><ref bean="addStylesheet"/></jaxws:dataBinding> -->
</jaxws:server>
<jaxrs:server id="root_REST" address="/">
<jaxrs:serviceBeans>
<ref bean="root_facade" />
</jaxrs:serviceBeans>
<jaxrs:properties>
<entry key="org.apache.cxf.endpoint.private" value="true" />
</jaxrs:properties>
</jaxrs:server>
<jaxrs:server id="master_REST" address="/rest"
staticSubresourceResolution="true">
<jaxrs:serviceBeans>
<ref bean="webapp" />
</jaxrs:serviceBeans>
<jaxrs:features>
<!-- <cxf:logging /> --><!-- NOISY! -->
</jaxrs:features>
<jaxrs:providers>
<ref bean="ExceptionProvider.AccessDenied" />
<ref bean="ExceptionProvider.BadInputPortName" />
<ref bean="ExceptionProvider.BadPropertyValue" />
<ref bean="ExceptionProvider.BadStateChange" />
<ref bean="ExceptionProvider.FilesystemAccess" />
<ref bean="ExceptionProvider.GeneralFailure" />
<ref bean="ExceptionProvider.IllegalArgument" />
<ref bean="ExceptionProvider.ImplementationProblem" />
<ref bean="ExceptionProvider.InvalidCredential" />
<ref bean="ExceptionProvider.JAXBException" />
<ref bean="ExceptionProvider.NegotiationFailed" />
<ref bean="ExceptionProvider.NoCreate" />
<ref bean="ExceptionProvider.NoCredential" />
<ref bean="ExceptionProvider.NoDestroy" />
<ref bean="ExceptionProvider.NoDirectoryEntry" />
<ref bean="ExceptionProvider.NoListener" />
<ref bean="ExceptionProvider.NoUpdate" />
<ref bean="ExceptionProvider.NotOwner" />
<ref bean="ExceptionProvider.Overloaded" />
<ref bean="ExceptionProvider.UnknownRun" />
<ref bean="MessagingProvider.File" />
<ref bean="MessagingProvider.FileConcatenation" />
<ref bean="MessagingProvider.FileSegment" />
<ref bean="MessagingProvider.InputStream" />
<ref bean="MessagingProvider.T2flow" />
<ref bean="MessagingProvider.Permission" />
<ref bean="MessagingProvider.URIList" />
<ref bean="MessagingProvider.ZipStream" />
<ref bean="jsonProvider" />
<ref bean="atomEntryHandler" />
<ref bean="atomFeedHandler" />
<bean class="org.apache.cxf.jaxrs.model.wadl.WadlGenerator">
<property name="addResourceAndMethodIds" value="true"/>
</bean>
</jaxrs:providers>
<jaxrs:outInterceptors>
<ref bean="Interceptor.FlushThreadLocalCache" />
</jaxrs:outInterceptors>
</jaxrs:server>
<jaxrs:server id="AtomFeed" address="/feed">
<jaxrs:serviceBeans>
<ref bean="feed" />
</jaxrs:serviceBeans>
<jaxrs:properties>
<entry key="org.apache.cxf.endpoint.private" value="true" />
</jaxrs:properties>
<jaxrs:providers>
<ref bean="atomEntryHandler" />
<ref bean="atomFeedHandler" />
</jaxrs:providers>
</jaxrs:server>
<jaxrs:server id="AdministrationInterface" address="/admin"
staticSubresourceResolution="true">
<jaxrs:serviceBeans>
<ref bean="admin" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jsonProvider" />
</jaxrs:providers>
</jaxrs:server>
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="ignoreNamespaces" value="true" />
<property name="namespaceMap" ref="jsonNamespaceMap" />
</bean>
<util:map id="jsonNamespaceMap" key-type="java.lang.String"
value-type="java.lang.String">
<entry key="http://www.w3.org/1999/xlink" value="" />
<entry key="http://www.w3.org/2000/09/xmldsig#" value="" />
<entry key="http://schema.ogf.org/urf/2003/09/urf" value="" />
<entry key="http://ns.taverna.org.uk/2010/xml/server/" value="" />
<entry key="http://ns.taverna.org.uk/2010/xml/server/rest/" value="" />
<entry key="http://ns.taverna.org.uk/2010/xml/server/soap/" value="" />
<entry key="http://ns.taverna.org.uk/2010/xml/server/feed/" value="" />
<entry key="http://ns.taverna.org.uk/2010/xml/server/admin/" value="" />
<entry key="http://ns.taverna.org.uk/2010/port/" value="" />
<entry key="http://ns.taverna.org.uk/2010/run/" value="" />
</util:map>
<bean id="root_facade" class="org.taverna.server.master.facade.Facade">
<property name="file" value="/welcome.html" />
<property name="contextualizer" ref="contextualizer" />
</bean>
<bean class="org.taverna.server.master.common.Uri.Rewriter"
autowire="byType" id="URI-Rewriter-Thunk">
<property name="suppressSecurity" value="${suppressRewriteEngine}" />
<property name="rewriteTarget" value="${default.webapp}" />
</bean>
<security:authentication-manager>
<security:authentication-provider ref="workflowInternalAuthProvder" />
<security:authentication-provider ref="authProvider" />
</security:authentication-manager>
<bean id="WSDLHeadOptionsInterceptor"
class="org.taverna.server.master.utils.WSDLHeadOptionsInterceptor" />
<cxf:bus>
<cxf:inInterceptors>
<ref bean="WSDLHeadOptionsInterceptor" />
</cxf:inInterceptors>
</cxf:bus>
<aop:aspectj-autoproxy proxy-target-class="true" />
<security:global-method-security
jsr250-annotations="enabled" />
<security:http realm="${http.realmName}" create-session="never"
use-expressions="true">
<security:http-basic />
<security:intercept-url pattern="/"
requires-channel="any" access="permitAll" />
<security:intercept-url pattern="/rest"
requires-channel="${requiredChannel}" access="permitAll" />
<security:intercept-url pattern="/rest/"
requires-channel="${requiredChannel}" access="permitAll" />
<security:intercept-url pattern="/rest/policy"
requires-channel="${requiredChannel}" access="permitAll" />
<security:intercept-url pattern="/rest/policy/"
requires-channel="${requiredChannel}" access="permitAll" />
<security:intercept-url pattern="/services/**"
requires-channel="${requiredChannel}" access="permitAll" />
<security:intercept-url pattern="/soap/**" method="GET"
requires-channel="${requiredChannel}" access="permitAll" />
<security:intercept-url pattern="/soap/**" method="POST"
requires-channel="${requiredChannel}"
access="hasRole('ROLE_tavernauser')" />
<security:intercept-url pattern="/admin"
requires-channel="${requiredChannel}"
access="hasRole('ROLE_tavernasuperuser')" />
<security:intercept-url pattern="/admin/**"
requires-channel="${requiredChannel}"
access="hasRole('ROLE_tavernasuperuser')" />
<security:intercept-url pattern="/rest/**"
requires-channel="${requiredChannel}"
access="hasAnyRole('ROLE_tavernauser','ROLE_tavernaworkflow')" />
<security:intercept-url pattern="/feed"
requires-channel="${requiredChannel}"
access="hasRole('ROLE_tavernauser')" />
<security:intercept-url pattern="/feed/**"
requires-channel="${requiredChannel}"
access="hasRole('ROLE_tavernauser')" />
</security:http>
</beans>