title: How to inject a non-serializable class (like java.util.ResourceBundle) with Weld
body: <p>I want to create a Producer that makes it possible to inject a java.util.ResourceBundle into any class in order to get localized Strings easily. My ResourceBundle-Producer looks like this:</p>
  
  <pre><code>public class ResourceBundleProducer {
    @Inject       
    public Locale locale;
  
    @Inject       
    public FacesContext facesContext;
  
    @Produces
    public ResourceBundle getResourceBundle() {
      return ResourceBundle.getBundle("/messages", locale )
    }
  }
  </code></pre>
  
  <p>The Injection of Locale and FacesContext works (took the corresponding producers from the Seam 3 Alpha Source). But unfortunately, ResourceBundle is not Serializable and therefore can't be produced in this way. I'm getting the following Error from Weld when trying to access a JSF-page which calls a bean that uses my ResourceBundle:</p>
  
  <p><code>
  Caused by: org.jboss.weld.IllegalProductException: WELD-000054 Producers cannot produce non-serializable instances for injection into non-transient fields of passivating beans\\n\\nProducer\: org.jboss.weld.bean-/D:/Program Files (x86)/GlassFish-Tools-Bundle-For-Eclipse-1.2/glassfishv3/glassfish/domains/teachernews/applications/teachernews/-ProducerMethod-services.producers.ResourceBundleProducer.getResourceBundle()\\nInjection Point\: field web.PersonHome.bundle
  </code></p>
  
  <p>Are there any ways to get my ResourceBundleResolver to work? Or are there any other mechanisms to get a similar functionality?
  Thanks in advance!</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>Okay, i'll spent some of my hardly earned points ;)
  Will also accept a good workaround for this issue!</p>
  
  <p>I got another example where creating a Producer doesn't work: a FlashProducer. A FacesContext-Flash also cannot be produced because Flash isn't serializable. </p>