[
https://issues.apache.org/jira/browse/CXF-2838?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12987814#action_12987814
]
Kaj Kandler commented on CXF-2838:
----------------------------------
I observe the very same behavior. The curious thing is that it is specific to
tomcat. I set up one of the samples using Jetty server and it succeeded to
initialize two separate contexts on the bus. However in my tomcat application
this fails.
it fails because it tries to load the configuration of the first service into
the servlet#2, which fails, because the service is already deployed.
> CXFServlet ignores proper ApplicationContext combination loading.
> -----------------------------------------------------------------
>
> Key: CXF-2838
> URL: https://issues.apache.org/jira/browse/CXF-2838
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.2.8
> Environment: Windows using Tomcat 5.5/Tomcat 6
> Reporter: Carl Holmes
> Original Estimate: 504h
> Remaining Estimate: 504h
>
> CXFServlet allows you to specify an init-param element specifying the
> location of an application-context file to be used in combination with the
> root application context (loaded via a ContextLoader(Listener/Servlet) to use
> to construct beans for web services. However, this loading process is not
> done properly.
> Say that a user wished to use the root application context, loaded in the
> ContextLoader(Listener/Servlet) to provide common functionality (database
> beans, cache, email services, etc) between different servlets, but wanted to
> separate out two different sets of web services (that used these common
> beans) and also had another servlet that used these common beans but did not
> expose web services. Normally, that would be done as so:
> context loader listener:
> common application context files
> Servlet#1(CXF servlet #1)
> only web service beans, including the imports for CXF from its META-INF
> directories as desired
> Servlet#2(CXF servlet #2, exposing different web services under a different
> url-pattern than Servlet#1)
> only CXF Servlet #2 web service beans, including the imports for CXF from
> its META_INF directories as desired
> UnrelatedServlet
> Gets the root application context and any additional beans it needs
> Each servlet would then be mapped on different url-patterns, for example,
> /services/*, /securedServices/*, and /.
> However, this doesn't work as expected.
> I traced this down - and it seems that before the context is refreshed, the
> bus is read and a controller is constructed before the servlet gets a chance
> to even read its initialization parameter and append these beans to the Root
> application context to construct a new application context for it to use.
> This isn't a problem for any web application just using an "all beans in the
> context loader listener" or "just web services" approach - but it makes the
> CXFServlet much less useful than it should be. The Root application context
> should be merged with the user-injected specific application context before
> any configuration is attempted.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.