[
https://issues.apache.org/jira/browse/CXF-2838?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-2838.
------------------------------
Resolution: Fixed
Fix Version/s: (was: NeedMoreInfo)
2.4.2
Assignee: Daniel Kulp
Confirmed fixed
> CXFServlet ignores proper ApplicationContext combination loading.
> -----------------------------------------------------------------
>
> Key: CXF-2838
> URL: https://issues.apache.org/jira/browse/CXF-2838
> Project: CXF
> Issue Type: Bug
> Components: Transports
> Affects Versions: 2.2.8
> Environment: Windows using Tomcat 5.5/Tomcat 6
> Reporter: Carl Holmes
> Assignee: Daniel Kulp
> Labels: application-context, cxf-servlet
> Fix For: 2.4.2
>
> Attachments: cxf-testcase.zip
>
> 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.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira