Updating/Reloading Message Bundles

Hi!,
I'm developing a JSF application which needs its Message Bundles to be updated quite regularly. The only way I've found to reload a message bundle file is to reload the context, which is not only tedious but also potentially hazardous as, under high client loads, sessions might be destroyed and the clients might lose their ongoing transactions.
Do I have any simpler way of making JSF reload a message bundle whenever it changes? Or at least force JSF to reload a message bundle when I want it to?
Kind Regards,
Guido

Well... I've removed the Duke Dollars as I've found the reply.
As there is no standard method in ResourceBundle, the non-standard way to do it involves reflection to make the cacheList field accessible, clearing it then make it private again, all of this in the ResourceBundle instance to be reloaded.
The code to do so is:
Field field = ResourceBundle.getBundle("resources.framework").getClass().getSuperclass().getDeclaredField("cacheList");
field.setAccessible(true);
sun.misc.SoftCache cache = (sun.misc.SoftCache)field.get(null);
cache.clear();
field.setAccessible(false);Obviously, where "resources.framework" is your resource bundle name.
I think that the reloading of a whole set of internationalized bundles would involve getting the faces context, retrieving all the installed locales, then acquiring the bundles one by one and applying this method.
Cheers!
Guido
Buenos Aires - Argentina

Similar Messages

  • Ipod update error message says can't write or read to IUPOD

    i have itunes 7.0.1 and a 20gb ipod. i am trying to update/reload the ipod from my itunes library. my itunes library is 24gb.....
    i have reformatted the ipod to factory settings and deselected the podcast category and have failed at loading the ipod. i get an error message after the reload begins which says that the "ipod cannot be read from or written to"
    do i have a bad disk? or am i failing because it is trying to load the entire music library which is 4gb larger than the ipod disk.
    thanks
    dennis

    See this troubleshooting article.
    "Disk cannot be read from or written to" error syncing iPod in iTunes.
    Why are you trying to load 24GB of music onto a 20Gb iPod!!

  • Moving message bundle (i18n) to another package within NetBeans...

    Hi,
    I'm using the NetBeans GUI builder (matisse) to create an internationalized (i18n) swing application.
    My bundle properties file (which contains all the internationalized labels and so on) is located in a package on the classpath. Now I want to move the bundle to another package - can this be done in an easy (automatic) fashion throughout the IDE because a lot of java classes (forms) use the bundle.
    BTW, find and replace within the editor does not work because all the gui building stuff is marked as protected and cannot be edited and editing each label separately with the internationalization wizard would take me hours...
    Any help would be greatly appreciated
    - Stephan

    Of course... but my java files would need some refactoring because there is a lot of code like that...
    setTitle(java.util.ResourceBundle.getBundle("
        com/foo/bar/bundle/Messages").getString("frame1.title"));.. which refers to a message bundle in the specified package - when I move the message bundle to another package all the references in the java files (like the example above) have to be updated.
    Unfortunately 'Find and Replace' in the editor doesn't work because it is generated gui code and marked as protected.
    So is there a possibility to automatically update all the references in the java files?
    Thanks a lot
    - Stephan

  • How do I use a bean to determine which message bundle value to use?

    Is there a way to use a bean to determine which message from my message bundle I use? I want to be able to call my bean in JSF/JSP page, have the bean return a String, and use that String to pick a message from my message bundle properties file. Now I can do this:
    <h:outputText value="#{bundle.messageA}" />or this:
    <h:outputText value="#{bean.messageName}" />where I have a method on the bean like this:
    public String getMessageName(){
         if(someTest == true){
              return "messageA";
         } else {
              return "messageB";
    }I want to combine the two so my bean determines which message I pick. I want to do this because I want to keep all the text a user sees in the message bundle file. However, based on the state of the bean, I want to display different messages.
    Thanks in advance,

    Ah this way. So you want that much of nasty if statements in the bean instead? ;)
    Then make use of the fact that you also can access Map values using the brace notation. E.g.
    <h:outputText value="#{bundle[bean.messageKey]}"/>Where getMessageKey() returns the message key, e.g. 'messageA' or 'messageB' and so on.

  • After last automatic update, error message XUL Runner error platform version '6.0.2' is not compatible with minVersion 6.0.1. maxVersion 6.0.1. I am unable to open Mozilla Firefox at all. Had to use Explorer to ask this question!

    After last automatic update, error message XUL Runner error platform version 6.0.2. is not compatible with min Version 6.0.1 maxVersion 6.0.1 appeared every time I try to open/run Mozilla Firefox.

    See:
    *[[/questions/869812]]
    *[[/questions/869951]]

  • How to specify multiple message bundles in faces-config.xml

    Hi
    I have different properties file which I want to use as message bundle.
    Message.properties
    Help.properties
    When I specify this in faces-config.xml
    <application>
    <message-bundle>/Message</message-bundle>
    <message-bundle>/Help</message-bundle>
    </application>
    and now when I try to use that in my jsp page like this
    <f:loadBundle basename="/Message" var="message"/>
    <f:loadBundle basename="/Help" var="help"/>
    and access any messagestring from those files I can not excess either of them. But when I use only one of them it works fine.
    Am I doing something wrong or I can not do this thing at all??
    Thanks in advance.

    I only specify one properties file in the <application> tag. That one is used for system messages. I have other properties files for labels, and another for just standard app text, so in my faces-config.xml I have something like this:
    <application>
    <message-bundle>message</message-bundle>
    <locale-config>
    <default-locale>en</default-locale>
    </locale-config>
    </application>
    where my message.properties is used for system messages (validation, etc).
    I don't list the other property files there. I have two more that I use, labels_en.properties, and standard_en.properties. Labels are words that have a : at the end or a *: for required fields. Standard are just other words that I use in my application. So on every page that I have, I start out with the following header:
    <html>
    <f:view locale="en_US">
    <head>
    <f:loadBundle basename="label" var="label"/>
    <f:loadBundle basename="standard" var="standard"/>
    <title>
    .....

  • Received notice of an update for one of my apps and when I tried to update the message reads "Account Not in this store"  i must switch to a Canadian store before purchasing

    Received notice of an update for one of my apps and when I tried to update the message reads "Account Not in this store"  i must switch to a Canadian store before purchasing.  I deleted app and tried to download again but still got the message.  Anyone know how to fix?  FYI have had phone for 2 years and this is the first time this has happened.

    The Apple id that you created do you remember if you created with your region sellected as Canada or US. If so you can change Region directly on your device by clicking on App Store icon, Scroll to bottom and tap your app is, click view acct and change region

  • How do I prevent the "update available" message while I'm watching a program?

    My 2011 Mac Mini is connected, via HDMI, to my 46" Samsung HD TV. I buy and rent 1080 movies and TV shows from iTunes. I also play a lot of other files that I've downloaded from other places. It's terrific except for one fly in the ointment...
    No matter what I'm watching, iTunes, NetFlix, VLC, Quicktime or straight off the desktop; if there is new software available, I get that annoying message that appears in the upper right hand corner. I can slide it to the right but it comes back a few minutes later. I could stop everything and perform the upgrade 10 to 30 minutes later but is this really the way video on a Mac is supposed to work? I feel there should be a way, at least, to pervent this from happening when I'm watching a program/movie/TV show. If it happens between, fine but why does it always have to pester me when I'm trying to enjoy watching T.V.?
    I know there is a way to turn it off, for the day, but come on- There's got to be a better solution than that. My U-Verse box very rarely bugs me about things. OSX and/or iTunes does it ALL the time. Can't it give me a break when I'm watching T.V.?
    Hopefully, I just missed some setting but I've tried a few things that didn't work.
    This is not a disaster but if someone knows a solution, I would be very grateful!
    Thanks!
    Teddy

    Mende1,
      Thanks for the super-fast response!
    I believe I tried this once before but the check box for "Automatically check for updates" always comes back, the next day. However, this might be my best solution for now and I'll test it watching the latest "Ripper Street", in iTunes, tonight. If it lasts the length of the program, I'll have to decide if I want to select "This solved my question" or "This helped me."
    I think I expected Apple to be a little more inTune with this. I absolutely love watching programs with my Mac Mini via HDMI. If they could find a consistent way to not interrupt programs, even with "Automatically check for updates" checked, the Mac video experience would be nearly perfect.
    I do make sure to perform updates but, between my wife's Mac and my two, plus the fact that updates seem to be occuring on a weekly basis, it's not easy to update immediately. I just feel that if a person is watching a movie or T.V. program, it's very clunky to have the "update available" message continuously appearing.
    Thanks again!
    Teddy

  • Message Bundling in BPM

    Hi All,
    I am trying to work on this Scenario for Message Bundling in BPM. The Scenario is i try to collect Idocs in BPM and after 3 IDocs from R/3, BPM will merge all the 3 into one message and send this message to a flat file.
    Now the problem is, though it shows Success message in SXMB_MONI, i dont get the output File.It doesnt even show the messages for my scenario in Runtime Workbench.
    Can somebody pl. guide me on this .
    Thanks,
    Ruchi

    Hi,
    I was trying to work on this Scenario for Message Bundling in BPM. The Scenario is i try to collect Idocs in BPM and after 3 IDocs from R/3, BPM will merge all the 3 into one message and send this message to a flat file.
    After checking it inot SXMB_MONI_BPE i could find out the error....
    <i>Bhavesh: Like you said there was an error in Variable assignment.</i>
    But now the problem is , of 3 messages i only get one record in the Output Response file....
    In SXMB_MONI , it shows <i>'Message is being sent'</i> for the other two.
    I checked the PE for that,it doesnt show any error in the Workflow log...but for the first message it shows the complete workflow and for the other two its showing in the processing mode..
    If anybody can guide me more on this..
    Thanks,
    Ruchi

  • UPDATE FAILED MESSAGE WHEN TRYING TO DOWNLOAD FROM CC DESKTOP APP.

    I keep getting an 'update failed' message everytime I try to download from my CC desktop.
    What could this be?

    Kc2232 I would recommend reviewing the installation log for the update to determine why it is failing to install. You can find details on how to locate and interpret your installation log files at Troubleshoot install issues with log files | CC - http://helpx.adobe.com/creative-cloud/kb/troubleshoot-install-logs-cc.html.  You are welcome to post any specific errors you discover to this discussion.

  • XI: How to update the Message Status (shown by transaction SXMB_MONI  )

    Hi
       My question might be stupid, but I need you help.
    I would like to know how can I update the message status what we see while using trasaction SXMB_MONI  . The Scenrio is, I have a Custom Interface program build on the Abap Proxy interface method called EXECUTE_ASYNCHRONOUS.
    If I am not wrong, transaction SXMB_MONI is on the XI system and also on the SAP Application system. ( But I am not sure in what way the same transaction differ in two systems )
    My issue is,  when I receive the xml data into a structure in abap proxy, I am doing some validation on the received message data. If I found some error in the data , then I need to update the Message status of the SXMB_MONI to  ERROR flag. How to implement this ?   I have not done one before. And I am not sure, if any exception like error message is raised, will it stop the proxy from processing further and update the Message Status and this can be viewed using SXMP_MONI in the SAP application system to be ERROR flag?
    Or is there a BAPI or function module to handle this ?
    Appreciate your help
    David

    Hi
    I am not sure If I had understood you reply. But Would need your help to have a bit more insight to your answer. I am not completely into XI , but I am from ABAP side.
    At the R/3 side , Abap Proxy object geneted has the INTERFACE and its associated  METHOD, in which I am building my own abap code to do any validation on incomming data. But If I want to Raise a Exception, I understand that this Expection has to be first defined .
    But do I have to define a new Z Expection class  or can I just add a exception in the Proxy -Interface-method.
    I have not understood this process.
    All I need to do is, if I find any incomming data error , during my validation at the R/3 side, I need to stop the METHOD processing ( by any means ) and Update the Message Status flag show in SXMB_MONI to Error . 
    What is the trigger  that i can implement in myown code that will update the Message status to Error , from R/3 perspective of using SXMB_MONI.
    Thanks
    David

  • How do I update CAN messages being transmitted as a periodic waveform?

    I am using NI-CAN 1.5 to transmit CAN messages with a CAN Object using the "Transmit Periodic Waveform" communication type. The CAN card I am using is a dual port PXI-8461.
    I wish to update the waveform message(s) but am running into problems. I configure the CAN Object with a write buffer size of 2 and then start transmitting 2 messages with one message going out every 500ms. These 2 messages are correctly getting placed on the bus. To update the messages, I successfully stop the CAN Object and attempt to write new data into the write buffer. This is where I am running into problems. The ncWrite VI is failing with an error of 0xBFF62008 (Write Queue Overflow).
    Upon further
    inspection, I noticed that when I stopped the Object and there was only 1 of 2 messages pending, I could successfully write one time; however, the second write would fail with the same error. If 2 messages were pending, neither write would be successful. I need to be able to update both messages. I thought maybe I could use the ncWait VI to wait for the write queue to empty and then write in 2 new messages; however, this will not work since the ncWait VI never returns before a timeout occurs in "Transmit Periodic Waveform" communication type. Either 2 or 1 messages are always pending so it never sees that the card is ready for new data.
    I looked in the Programmer's Reference Manual, and this is the procedure recommended. (A bit different, but I tried it and came up with the same results.) The Reference Manual claims ncWrite replaces the oldest data in the queue on page 3-30, but on page 2-40 it says ncWrite returns an error when called on a full queue.
    Does anyone see anyt
    hing that I'm doing wrong or have an alternate way to accomplish what I want? Thanks for your help.

    The "Transmit Periodic Waveform" section (pg 3-30) of the NI-CAN Programmer's Reference states, "Use this configuration to transmit a fixed sequence of CAN data frames over and over, one CAN data frame every period."
    The words "fixed sequence" denote that it was not intended to change as the program runs. I appolgize if this was not clear. Any suggestions for improvement to the documentation can be emailed to [email protected]
    If those two data sets do not change at run-time, they could be merged together. For example, make the buffer the size of both data sets added together. Start by Writing the first element of set one, then the first element of set two, then the second element of set one, then the second element of set two, etc.
    Randy Solomonson
    Application Engineer
    National Instruments

  • Message bundles accessed from JSF and JSP pages

    Hello, everybody!
    I'm developing a localized JSF application. It is working pretty well until now.
    These are my message files:
    mensagens.properties
    mensagens_en_US.propertiesThis is how they're configured in faces-config.xml:
    <application>
        <resource-bundle>
            <base-name>br.urca.www.biblioteca.web.mensagens</base-name>
            <var>msg</var>
        </resource-bundle>
    </application>And this is how I access the messages in a page:
    <h:outputText value="#{msg.titulo}" />Nothing new until now. But now there was a need for me to have a raw jsp page in
    my web application. This page is displaying ok but I also need to access the
    message bundles as I'm able to access in the normal jsp with the JSF components.
    As you should know I can't use something like the above code with an +<h:outputText>+
    to access the messages because this is a JSF component and I'll not be able to use
    JSF components with this raw jsp page.
    So, my question is: how do I access my localized messages from a raw jsp page? I
    suppose there should be a way to do this, but unfortunately I started programming
    to the web world in Java with JSF, not JSP, so I don't know how to do this with
    JSP.
    Thank you very much.
    Marcos

    BalusC wrote:
    Just include [jstl-1.2.jar|https://maven-repository.dev.java.net/repository/jstl/jars/] in your classpath and define the fmt taglib in your JSP. Nothing more is needed.
    Hello, BalusC. Thank you for your help. We're almost there. After I have included the jstl-1.2.jar you provided me I can use the fmt tag and access message bundles from my raw jsp page (even though I had to provide other message bundles instead of the ones that I use in the other jsf pages, but it's better than nothing).
    Now there just on problem to be fixed. The jsp page is not aware when I change the locale of my application. I change this locale in a jsf page.
    I have this component:
    <h:selectOneMenu value="#{pesquisaAcervo.idiomaAplicacao}"
        valueChangeListener="# {pesquisaAcervo.idiomaAplicacaoMudado}" onchange="submit();">
        <f:selectItems value="#{pesquisaAcervo.idiomasAplicacao}" />
    </h:selectOneMenu>that calls this event in my backing bean class:
    public void idiomaAplicacaoMudado(ValueChangeEvent e)
        fIdiomaAplicacao.liberarItens();
        Idioma idioma = Idioma.deString(e.getNewValue().toString());
        // This line is for JSF
        FacesContext.getCurrentInstance().getViewRoot().setLocale(idioma.localidade());
        // This line is for Tiles
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().
            put(org.apache.tiles.locale.impl.DefaultLocaleResolver.LOCALE_KEY, idioma.localidade());
    }So, do I have to include another line in the idiomaAplicacaoMudado event above in order for the jsp page load the correct resource bundle? Or what else do I have to do?
    Thank you.
    Marcos

  • Argh! Message bundle file names are not allowed to have dots???

    It took me several hours to find the reason for this exception:
    java.util.MissingResourceException: Can't find bundle for base name properties\com.domain.prj.huj.MainApp.Messages, locale de_DE
         at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:804)
         at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:773)
         at java.util.ResourceBundle.getBundle(ResourceBundle.java:538)If the message bundle name contains dots (package separators), this exception is thrown! When I remove the dots, it works. But even the javadoc for ResourceBundle.getBundle() says that the baseName parameter is " the base name of the resource bundle, a fully qualified class name ".
    Is it not possible to have the message bundle file names containing dots (i.e. package declarations with class names)?

    Nope. Periods are used to delimit packages in the basename. So given:
    "com.domain.prj.huj.MainApp.Messages",
    ResourceBundle will look for "com/domain/prj/hui/MainApp/Message[_local][.class|.properties]" on the class path (ie, in jars etc).
    I've just had to implement an alternate RB factory to deal with legacy property files which contain periods. If you are starting from scratch, don't put in periods.

  • Message Bundle class not found

    Hello,
    i'm using JDev 10.1.3.3, and creating ADF BC application. When i've created the jspx page, went to it's Page Definition, and in Structure editor tried to add the Message Bundle file to this page - selected the "Generate Resource Bundle" from the context menu - i'm getting error "Class ...app_XXXPageDefMsgBundle not found" .
    Other pages in application got the same error.
    How can i solve this problem?

    And in the same time, Message Bundle classes for Entity Objects (XXXRowImplMsgBundle.java) are generating well, without any errors.

Maybe you are looking for