0

Just started doing my first steps with FacesFlow with Glassfish 4.1 (i.e. using Mojarra) and when invoking my flow I get an error named

[SEVERE] [] [javax.enterprise.resource.webcontainer.jsf.application] ...  Error Rendering View[/register/register.xhtml]
org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.faces.flow.FlowScoped
    at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:708)

Several others had that error too as I can see in the web but the solutions that worked for other somehow dont work for me (see below).

I also tried @SessionScoped which works. So it is related to @FlowScoped.

To what I read in a book that I use to get me up to speed I should be ok from coding and config end since according to API @FlowScoped is CDI based and I use the following code at my backing bean/controller.

@Named
@FlowScoped(value="register")
public class RegisterController implements Serializable {

I have a flow named register whose pages are located in a dirctory /register and the first page of the flow is named register.xhtml

Following snippet I tried both as a register/register-flow.xml config file as well as WEB-INF/faces-config.xml without success.

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">
    <flow-definition id="register">
        <flow-return id="overview">
            <from-outcome>/index</from-outcome>
        </flow-return>
    </flow-definition>
</faces-config>

What I tried so far: I found a post suggesting that <Context antiJARLocking="true" path="/PROJEST_NAME"/> would solve the problem but after googling the tag it turns out its an outdated Tomcat tag.

Changing @Named to @ManagedBean didn't really help as suggested on one page. I could open the pages but the data in my controller class would not be available when invoking the next page of the flow anymore. But @ManagedBean shouldn't really work I guess since @FlowScoped is CDI based.

Another post suggested to ensure that javax.faces.CLIENT_WINDOW_MODE is enabled. I tried that via adding the following to my web.xml but without success

<context-param>
<param-name>javax.faces.CLIENT_WINDOW_MODE</param-name>
<param-value>url</param-value>
</context-param>

Another suggested to use Glassfish 4.x which I already do

Any ideas?

Tiny
  • 27,221
  • 105
  • 339
  • 599
TomFree
  • 1,091
  • 3
  • 17
  • 31

1 Answers1

-2

With Glassfish 4.1 at least you need to add the cdi-api.jar directory library.

Glassfish includes the weld-osgi-bundle.jar but it also needs cdi-api.jar to work because the CDI bean scopes aren't in the weld-osgi... so make sure you have it if not its here:

[gf_installation_path]/glassfish/modules/cdi-api.jar

This will give you access to the packages used with CDI Beans i.e., javax.enterprise.context.*

If not then probably

  1. this could help
  2. and this

GL!

Community
  • 1
  • 1
Esteban Rincon
  • 2,040
  • 3
  • 27
  • 44