How to get Spring MessageContext
from Java class?
Should I use some @Resource
or @Autowire
to inject context
var to class or, for instance, to use some global context SpringContext or some other in order to get MessageContext
.
What is approach?
I'd start by reading what the standard method of doing this is and try that:
@Resource WebServiceContext wsContext;
@WebMethod public String echoHello(String msg) {
MessageContext context = wsContext.getMessageContext();
...
}
That's how to do it on the server side. On the client side, the request and response contexts are just simple maps that you retrieve from the service stub (which will implement BindingProvider
even if you don't explicitly ask for it); they don't need the scope management that MessageContext
adds.
If I understand correctly You're using Spring Webflow with JSF and need to access Webflow MessageContext from within a JSF ActionListener?
If so You can always use the RequestContextHolder (watch out to use the one from Webflow, as Spring MVC has it's own!), but it uses ThreadLocal
so it's not too elegant:
MessageContext messageContext =
RequestContextHolder.getRequestContext().getMessageContext();
You cannot use standard DI, as the MessageContext
is created per each request by the FlowExecutor
on every flow start or resume, using MessageSource
.
in your flow.xml add a messageContext like this:
<transition on="search">
<evaluate expression="service.search(service.id, messageContext)" result="scope" />
</transition>`
in your Service.java you can use the messageContext now.
public List search(String serviceId, MessageContext messageContext) {
...
messageContext.addMessage(
...
}