jsf-extensions
  1. jsf-extensions
  2. JSF_EXTENSIONS-60

DynaFaces uses old blueprints component jar and places it in app-server classpath

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: current
    • Fix Version/s: milestone 1
    • Component/s: www
    • Labels:
      None
    • Environment:

      Operating System: All
      Platform: All

    • Issuezilla Id:
      60

      Description

      When I install the SDK with SWDP, the petstore and blueprints solutions catalog
      applications no longer work. Here is the error I got:
      -----------------------------------
      Type Exception report

      message

      descriptionThe server encountered an internal error () that prevented it from
      fulfilling this request.

      exception

      javax.servlet.ServletException: PWC1244: Servlet execution threw an exception

      root cause

      java.lang.NoSuchMethodError:
      com.sun.javaee.blueprints.components.ui.util.Util.getAttributeValue(Ljavax/faces/context/FacesContext;Ljavax/faces/component/UIComponent;Ljava/lang/String;)Ljava/lang/Object;

      note The full stack traces of the exception and its root causes are available in
      the Sun Java System Application Server 9.1 logs.
      -------------------------------
      This error is happening because Dynamic Faces is probably using older blueprints
      components (1.4?) and that jar gets added to the app-server classpath. This
      results in the new version of the
      com.sun.javaee.blueprints.components.ui.util.Util class in the petstore and
      solutions catalog hidden by the older version placed in by Dynamic Faces. For
      now, we are trying to create a work around by renaming this class to something
      else in the solutions catalog.

      Probably, a better fix for this is to first use the new components in Dynamic
      Faces. Secondly, this jar probably does NOT belong in the app-server classpath
      unless absolutely necessary for the runtime. It seems like the blueprints
      components are only used for some examples of Dynamic Faces, and if that is the
      case, the component jar should be placed along with the examples.

        Activity

        Hide
        inder added a comment -

        We note that bp-ui-5 component library is also present in DynaFaces. This
        definitely needs to be updated to the latest version of the blueprints library,
        or taken out of the AppServer classpath for any of the blueprints applications
        to work. We do NOT have a workaround for this one.

        Show
        inder added a comment - We note that bp-ui-5 component library is also present in DynaFaces. This definitely needs to be updated to the latest version of the blueprints library, or taken out of the AppServer classpath for any of the blueprints applications to work. We do NOT have a workaround for this one.
        Hide
        Ed Burns added a comment -

        Inder and Sean, as you know, there are many different versions of the blueprints
        jars floating around and I need us to be absolutely specific about the one in
        the file bp-ui-5-simple.jar.

        The bp-ui-5-simple.jar contains the JSF 1.2 versions of the ancient but popular
        JSF example components: ImageMap, ResultSetScroller, TabPanel, and Chart. These
        are NOT ajax components.

        Last I heard, your team was no longer interested in these non-ajax components
        and they had been moved to some sort of "playground". I would like for you to
        continue to own these components because I wouldn't have donated them from the
        JSF codebase to the blueprints one if I knew I was going to have to take them
        back over some day.

        Can you please update the bp-ui-simple-5.jar file on maven on java.net?

        The maven info is

        <dependency>
        <groupId>com.sun.javaee.blueprints</groupId>
        <artifactId>bp-ui-simple</artifactId>
        <version>5</version>
        <scope>runtime</scope>
        </dependency>

        Also, we can't put this jar in WEB-INF/lib because of a classloader bug. If we
        put just this jar in WEB-INF/lib, then all the dynafaces jars have to go into
        WEB-INF/lib for all the samples.

        Show
        Ed Burns added a comment - Inder and Sean, as you know, there are many different versions of the blueprints jars floating around and I need us to be absolutely specific about the one in the file bp-ui-5-simple.jar. The bp-ui-5-simple.jar contains the JSF 1.2 versions of the ancient but popular JSF example components: ImageMap, ResultSetScroller, TabPanel, and Chart. These are NOT ajax components. Last I heard, your team was no longer interested in these non-ajax components and they had been moved to some sort of "playground". I would like for you to continue to own these components because I wouldn't have donated them from the JSF codebase to the blueprints one if I knew I was going to have to take them back over some day. Can you please update the bp-ui-simple-5.jar file on maven on java.net? The maven info is <dependency> <groupId>com.sun.javaee.blueprints</groupId> <artifactId>bp-ui-simple</artifactId> <version>5</version> <scope>runtime</scope> </dependency> Also, we can't put this jar in WEB-INF/lib because of a classloader bug. If we put just this jar in WEB-INF/lib, then all the dynafaces jars have to go into WEB-INF/lib for all the samples.
        Hide
        inder added a comment -

        We verified the contents of the jar file and notice that only two classes are shared: Util, and HttpClient. We
        will try to rename our versions and see if that works.

        This jar should NOT be in the app-server classpath because this probably means that the phase-listener in
        it will get fired for ALL JSF requests for all applications. We tried testing this and see the phase-listener
        being fired on all such requests. This is a big performance issue and should be fixed. Can you look into
        that?

        For the maintenance issue of the older components, let us track that separately. Can you file a bug on the
        bpcatalog project for that? Same goes for the maven change that you are requesting.

        Show
        inder added a comment - We verified the contents of the jar file and notice that only two classes are shared: Util, and HttpClient. We will try to rename our versions and see if that works. This jar should NOT be in the app-server classpath because this probably means that the phase-listener in it will get fired for ALL JSF requests for all applications. We tried testing this and see the phase-listener being fired on all such requests. This is a big performance issue and should be fixed. Can you look into that? For the maintenance issue of the older components, let us track that separately. Can you file a bug on the bpcatalog project for that? Same goes for the maven change that you are requesting.
        Hide
        inder added a comment -

        Another good way to fix the bug in DynaFaces is to remove all the samples and the the bp-ui-simple jar
        file for the SDK Beta release. These are anyway non-essential for the runtime and can be put in after the
        App-server bug is fixed that allows this jar to be placed in the application's WEB-INF/lib.

        Show
        inder added a comment - Another good way to fix the bug in DynaFaces is to remove all the samples and the the bp-ui-simple jar file for the SDK Beta release. These are anyway non-essential for the runtime and can be put in after the App-server bug is fixed that allows this jar to be placed in the application's WEB-INF/lib.
        Hide
        Rajiv Mordani added a comment -

        I think that the samples need to be there. That's how users know how to use
        these technologies. The other option is we don't put the dynafaces jars in the
        lib/addos classpath but put it in the WEB-INF/lib of the app.

        • Rajiv
        Show
        Rajiv Mordani added a comment - I think that the samples need to be there. That's how users know how to use these technologies. The other option is we don't put the dynafaces jars in the lib/addos classpath but put it in the WEB-INF/lib of the app. Rajiv
        Hide
        inder added a comment -

        This bug has been fixed by recent changes by Ed and by renaming of the clashing
        class by the blueprints team.

        Show
        inder added a comment - This bug has been fixed by recent changes by Ed and by renaming of the clashing class by the blueprints team.

          People

          • Assignee:
            Ed Burns
            Reporter:
            inder
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: