money.jpg  Note tehnice exemplu Currency Exchange (schimb valutar) - serviciul Internationalization


Localizarea tabelelor de bază de date
Localizarea codului sursă
Examinarea notelor despre codare
Folosirea serviciului Internationalization

Localizarea tabelelor de bază de date

Acest Exemplu foloseşte baza de date CUSTOMER pentru a păstra informaţiile de cont ale utilizatorilor. Baza de date conţine o tabelă numită customer cu două rânduri, aşa cum este arătat în următorul exemplu:

account name password Balance
123 Kevin user 6000
345 David user 5000

Pentru a deschide baza de date şi vizualiza tabela, consultaţi ghidul utilizatorului bazei de date Cloudscape. Când rulaţi exemplul, folosiţi contul dumneavoastră de utilizator şi parola pentru a vă loga.

Localizarea codului sursă

Localizaţi codul sursă în directorul profile_root/samples/src/i18nctx/CurrencyExchange.

z/OS: Codul sursă pentru Exemple nu este furnizat pe platforma z/OS deoarece aplicaţiile Exemplu nu sunt construite pe platforma z/OS.

Examinarea notelor despre codare

Model

Citiţi următoarele note despre Model:

Bean-urile sesiune sunt scrise pentru a ascunde CMP. În general, se consideră o practică mai bună livrarea de bean-uri sesiune, care furnizează metode simple aplicaţiei, în loc de a da acces liber aplicaţiei la bean-urile entitate CMP individuale.

Vizualizare

Citiţi următoarele note despre Vizualizare:

Controler

Fişierul CurrencyServlet.java procesează cererile venite de la browser-ul HTTP, apelează metodele bean-ului corespunzător (Exchange) şi dispecerizează contextul corespunzător la pagina JSP.

Folosirea serviciului Internationalization

Următorii paşi de programare demonstrează cum să folosiţi serviciul Internationalization:

  1. Importaţi serviciul Internationalization şi clasele asociate.
      import com.ibm.websphere.i18n.context.UserInternationalization;
      import com.ibm.websphere.i18n.context.Internationalization;
      import com.ibm.websphere.i18n.context.InvocationInternationalization;
      import java.util.Locale;
      import java.util.SimpleTimeZone;
      import java.util.TimeZone;
        
  2. Rezolvaţi API-ul.
      private UserInternationalization userI18n = null;
      private Internationalization callerI18 = null;
      private InvocationInternationalization invI18n = null;
      public static final String USERI18N_URL = "java:comp/websphere/UserInternationalization";
     
      try
      {
        Context initialContext = new InitialContext();
        userI18n = (UserInternationalization) initialContext.lookup(USERI18N_URL);
        callerI18n = userI18n.getCallerInternationalization();
        invI18n = userI18n.getInvocationInternationalization();
      }
      catch (NamingException ne)
      {
        //Error: Cannot resolve UserInternationalization
      }
      catch (IllegalStateException ise)
      {
        //Error: UserInternationalization is not available
      }
      
  3. Obţineţi contextul apelantului.
      //Caller Internationalization read functions
      Locale callerL = null;
      SimpleTimeZone callerTz = null;
      Locale[] callerLL = null;
      try
      {
        callerL = callerI18n.getLocale();
        callerTz = (SimpleTimeZone) callerI18n.getTimeZone();
        callerLL = callerI18n.getLocales();
      }
      catch (IllegalStateException ise)
      {
        //Error: An anomaly occurred while accessing Caller Internationalization context
      }   
      
  4. Accesaţi contextul de invocare.
      //Invocation Internationalization read functions
      Locale invL = null;
      SimpleTimeZone invTz = null;
      Locale[] invLL = null;
      try
      {
        invL = invI18n.getLocale();
        invTz = (SimpleTimeZone) invI18n.getTimeZone();
        invLL = invI18n.getLocales(); 
      }
      catch (IllegalStateException ise)
      {
        //Error: An anomaly occurred while accessing Invocation Internationalization context
      }   
      
      Locale[] locales = new Locale[] { Locale.US,
      Locale.CHINA, Locale.FRANCE };
      Locale callerL = Locale.GERMAN;
      SimpleTimeZone stz = new SimpleTimeZone(0,
      "CST", 1, 1, 1, 1, 2, 2, 2, 2);
      
      //Invocation Internationalization write functions
      try
      {
        invI18n.setLocales(locales);
        invI18n.setLocale(locale);
        invI18n.setTimeZone(stz);
        invI18n.setTimeZone("PST");
      }
      catch (IllegalStateException ise)
      {
        //Error: An anomaly occurred while setting Invocation Internationalization context
      }