Apache CXF API

org.apache.cxf.jaxws.spring
Class JaxWsWebServicePublisherBeanPostProcessor

java.lang.Object
  extended by org.springframework.context.support.ApplicationObjectSupport
      extended by org.springframework.web.context.support.WebApplicationObjectSupport
          extended by org.springframework.web.servlet.handler.AbstractHandlerMapping
              extended by org.springframework.web.servlet.handler.AbstractUrlHandlerMapping
                  extended by org.apache.cxf.jaxws.spring.JaxWsWebServicePublisherBeanPostProcessor
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.context.ApplicationContextAware, org.springframework.core.Ordered, org.springframework.web.context.ServletConfigAware, org.springframework.web.context.ServletContextAware, org.springframework.web.servlet.HandlerMapping

public class JaxWsWebServicePublisherBeanPostProcessor
extends org.springframework.web.servlet.handler.AbstractUrlHandlerMapping
implements org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.web.context.ServletConfigAware, org.springframework.beans.factory.BeanFactoryAware

Bean to scan context for potential web services. This scans the beans for classes that are annotated with @WebService. Excepting those already declared via the JAX-WS Spring schema, it launches each as an endpoint. By default, it sets up a default JaxWsServiceFactory and JAX-B data binding, and then creates a URL under /services/ based on the service name. Properties of the bean permit you to configure this; if you set prototypeServiceFactoryBeanName, the code will fetch that bean. It must be a prototype, since service factory object can't be used for more than one endpoint. Similarly, prototypeDataBindingBeanName can be used to control the data binding. Note that this class uses org.apache.cxf.transport.servlet#CXFServlet from the cxf-rt-transports-http-jetty library, which is not part of the standard dependencies of the JAX-WS front end. If you use this processor in an environment with no servlet, it will still launch the endpoints using the embedded CXF server.


Nested Class Summary
static class JaxWsWebServicePublisherBeanPostProcessor.ServletAdapter
           
 
Field Summary
 
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
logger
 
Fields inherited from interface org.springframework.web.servlet.HandlerMapping
BEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
JaxWsWebServicePublisherBeanPostProcessor()
           
 
Method Summary
 String getPrototypeDataBindingBeanName()
           
 String getPrototypeServerFactoryBeanName()
           
 boolean isCustomizedDataBinding()
          For Unit Test.
 boolean isCustomizedServerFactory()
          For Unit Test.
 Object postProcessAfterInitialization(Object bean, String beanName)
           
 Object postProcessBeforeInitialization(Object bean, String beanName)
           
 void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
           
 void setPrototypeDataBindingBeanName(String prototypeDataBindingBeanName)
          Set the data binding for all services launched by this bean.
 void setPrototypeServerFactoryBeanName(String prototypeServerFactoryBeanName)
          Set the server factory for all services launched by this bean.
 void setServletConfig(javax.servlet.ServletConfig servletConfig)
           
 void setUrlPrefix(String urlPrefix)
          Set the prefix for the generated endpoint URLs.
 
Methods inherited from class org.springframework.web.servlet.handler.AbstractUrlHandlerMapping
buildPathExposingHandler, exposePathWithinMapping, exposeUriTemplateVariables, getHandlerInternal, getHandlerMap, getRootHandler, lookupHandler, registerHandler, registerHandler, setLazyInitHandlers, setRootHandler, supportsTypeLevelMappings, validateHandler
 
Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerMapping
adaptInterceptor, detectMappedInterceptors, extendInterceptors, getAdaptedInterceptors, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getUrlPathHelper, initApplicationContext, initInterceptors, setAlwaysUseFullPath, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelper
 
Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
 
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, requiredContextClass, setApplicationContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JaxWsWebServicePublisherBeanPostProcessor

public JaxWsWebServicePublisherBeanPostProcessor()
                                          throws SecurityException,
                                                 NoSuchMethodException,
                                                 ClassNotFoundException
Throws:
SecurityException
NoSuchMethodException
ClassNotFoundException
Method Detail

setUrlPrefix

public void setUrlPrefix(String urlPrefix)
Set the prefix for the generated endpoint URLs.

Parameters:
urlPrefix -

postProcessBeforeInitialization

public Object postProcessBeforeInitialization(Object bean,
                                              String beanName)
                                       throws org.springframework.beans.BeansException
Specified by:
postProcessBeforeInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
Throws:
org.springframework.beans.BeansException

postProcessAfterInitialization

public Object postProcessAfterInitialization(Object bean,
                                             String beanName)
                                      throws org.springframework.beans.BeansException
Specified by:
postProcessAfterInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
Throws:
org.springframework.beans.BeansException

setServletConfig

public void setServletConfig(javax.servlet.ServletConfig servletConfig)
Specified by:
setServletConfig in interface org.springframework.web.context.ServletConfigAware

setBeanFactory

public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
                    throws org.springframework.beans.BeansException
Specified by:
setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAware
Throws:
org.springframework.beans.BeansException

getPrototypeServerFactoryBeanName

public String getPrototypeServerFactoryBeanName()

setPrototypeServerFactoryBeanName

public void setPrototypeServerFactoryBeanName(String prototypeServerFactoryBeanName)
Set the server factory for all services launched by this bean. This must be the name of a scope='prototype' bean that implements org.apache.cxf.frontend#ServerFactoryBean.

Parameters:
prototypeServerFactoryBeanName -

getPrototypeDataBindingBeanName

public String getPrototypeDataBindingBeanName()

setPrototypeDataBindingBeanName

public void setPrototypeDataBindingBeanName(String prototypeDataBindingBeanName)
Set the data binding for all services launched by this bean. This must be the name of a scope='prototype' bean that implements org.apache.cxf.databinding#DataBinding.

Parameters:
prototypeDataBindingBeanName -

isCustomizedServerFactory

public boolean isCustomizedServerFactory()
For Unit Test.

Returns:

isCustomizedDataBinding

public boolean isCustomizedDataBinding()
For Unit Test.

Returns:

Apache CXF API

Apache CXF