ContextNotActiveException
hantsy Oct 20, 2011 11:37 AMI have a link in a page(the backbean is conversation scoped stateful session bean)...
<a href="#{request.contextPath}/forwarding/caseExportPdfServlet?id=#{forwardingCaseEdit.currentForwardingCase.id}"> Export PDF </a>
I want to use a normal link to servelt to generate pdf report.
@WebServlet("/forwarding/caseExportPdfServlet") public class ExportPdfServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory .getLogger(ExportPdfServlet.class); @Inject @RequestParam Long id; @Inject EntityManager em; @Inject private ResourceProvider resourceProvider; @Inject @Jasper ReportCompiler compiler; @Inject @PDF @Jasper ReportRenderer<Report> pdfRenderer; /** * @see HttpServlet#HttpServlet() */ public ExportPdfServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (log.isDebugEnabled()) { log.debug("call processRequest"); log.debug("request param id@" + id); } ForwardingCase _case = em.find(ForwardingCase.class, id); OutputStream _out = response.getOutputStream(); InputStream sourceReport = resourceProvider .loadResourceStream("/reports/forwarding-case.jrxml"); JRDataSource jasperDataSource = new JRBeanCollectionDataSource( _case.getForwardingItems()); // source ReportDefinition report = compiler.compile(sourceReport); Map<String, Object> params = new HashMap<String, Object>(); params.put("forwardingCase", _case); Report reportInstance = report.fill(jasperDataSource, params); // ByteArrayOutputStream os = new ByteArrayOutputStream(_out); // // OutputStream // Render output as the desired content pdfRenderer.render(reportInstance, _out); _out.flush(); } }
But when I clicked the link, and got the following exception:
org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.enterprise.context.ConversationScoped org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:667) org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:77) org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:124) org.jboss.weld.proxies.EntityManager$ManagedPersistenceContext$-886017761$Proxy$_$$_WeldClientProxy.find(EntityManager$ManagedPersistenceContext$-886017761$Proxy$_$$_WeldClientProxy.java) com.telopsys.siorc.forwarding.servlets.ExportPdfServlet.processRequest(ExportPdfServlet.java:86) com.telopsys.siorc.forwarding.servlets.ExportPdfServlet.doGet(ExportPdfServlet.java:72) javax.servlet.http.HttpServlet.service(HttpServlet.java:734) javax.servlet.http.HttpServlet.service(HttpServlet.java:847) org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67) com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:118) org.jboss.solder.servlet.exception.CatchExceptionFilter.doFilter(CatchExceptionFilter.java:65) org.jboss.solder.servlet.event.ServletEventBridgeFilter.doFilter(ServletEventBridgeFilter.java:72)