Derzeit verwende ich ein Transaction View-Muster, um das Lazy-Laden von Sammlungen in Ansichten zu ermöglichen.JPA Lazy Loading Sammlungen in JSF-Ansicht - besser als Filter verwenden?
Ich habe folgendes in web.xml
<filter>
<filter-name>view</filter-name>
<filter-class>com.jasoni.ViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>view</filter-name>
<url-pattern>*.xhtml</url-pattern>
</filter-mapping>
Und der Filterklasse hat die folgenden ...
public class ViewFilter implements Filter {
@Resource UserTransaction tx;
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try {
tx.begin();
chain.doFilter(request, response);
}
//catch here
finally {
//another try-catch
tx.commit();
}
}
}
Dann vorausgesetzt, ich habe folgendes (eher gekünstelt) Backing Bean
@ManagedBean
@RequestScoped
public class DepartmentEmployees {
@EJB
private DepartmentServiceBean deptService;
@ManagedProperty(value="#{param.deptId}")
private Integer deptId;
private Department dept;
@PostConstruct
public String init() {
dept = deptService.findById(deptId);
}
}
Ich kann so etwas in meiner Ansicht (.xhtml Datei)
tunIch frage mich nur, ob jemand eine andere Möglichkeit kennt, dasselbe zu erreichen, ohne Filter (oder Servlets) zu benutzen.
Hallo Jan, danke für deine Antwort! Ja, ich benutze einen Java EE Server (JBoss) und möchte vermeiden, zu viele Dinge zu tun, die JBoss-spezifisch sind. Gibt es einen ähnlichen Ansatz, der mit Stateless Session Beans funktionieren wird? – JasonI
Nun, nichts, was ich gepostet habe, ist JBoss-spezifisch, Sie werden keine Unze Portabilität verlieren (Weld ist die Standard-CDI-Implementierung und Seam 3 ist eine reguläre CDI-Erweiterung). Dieser Ansatz ist jedoch zustandsorientiert, sodass Sie ihn nicht mit SLSB implementieren können. Aber fürchtet euch nicht vor Staaten, da ist nichts schlechtes an ihnen. –
Okay, danke für die Info. Ich werde anfangen, in Weld und Seam3 zu suchen. – JasonI