Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to inject a non-serializable class (like java.util.ResourceBundle) with Weld
    text
    copied!<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>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload