Before you begin
An application component must first resolve a reference to the InvocationInternationalization object and then bind it to the InvocationInternationalization interface of the internationalization context API.
Why and when to perform this task
Every remote invocation of a servlet service or Enterprise JavaBeans (EJB) business method has an invocation internationalization context associated with the thread that is running that invocation. Invocation context is the internationalization context under which servlet and business method implementations run; it is propagated on subsequent invocations by the internationalization service and middleware. This task also applies to Web service client programs.
Perform the following task to access elements of the invocation internationalization context.
Steps for this task
java.util.Locale myLocale; try { myLocale = invocationI18n.getLocale(); } catch (IllegalStateException ise) { // The invocation context is unavailable; // is the service started and enabled? } ...
The InvocationInternationalization interface supports read and write access to invocation internationalization context within application components. However, according to internationalization context management policies, only components configured to manage internationalization context (application-managed internationalization, or AMI, components) have write access to invocation internationalization context elements. Calls to set invocation context elements within container-managed internationalization (CMI) application components result in a java.lang.IllegalStateException exception. Any differences in how application components can use InvocationInternationalization methods are explained in Internationalization context.
DateFormat df = DateFormat.getDateInstance(myLocale); String localizedDate = df.getDateInstance().format(aDateInstance); ...
Example
... //-------------------------------------------------------------------- // Set the invocation context under which the business method or // servlet will run and propagate on subsequent remote business // method invocations. //-------------------------------------------------------------------- try { invocationI18n.setLocale(new Locale("en", "GB")); invocationI18n.setTimeZone(SimpleTimeZone.getTimeZone("GMT")); } catch (IllegalStateException ise) { // Is the component CMI; is the service started and enabled? } myEjb.myBusinessMethod();
Within CMI application components, the Internationalization and InvocationInternationalization interfaces are semantically equivalent. You can use either of these interfaces to obtain the context associated with the thread on which that component is running. For instance, both interfaces can be used to obtain the list of locales propagated to the servlet doPost service method.
Related concepts
Internationalization context
Related tasks
Gaining access to the internationalization context API
Accessing caller locales and time zones
Related reference
Internationalization context API: Programming reference
Example: Internationalization context in an EJB client program
Example: Internationalization context in a servlet
Example: Internationalization context in a session bean