2.6.0 Additonal Release Notes

This page serves as additional release notes about 2.6.0 GA. It is intended as a supplement to the releaseNotes.html accompanying the release.

1. Problems developing uPortal 2.6.0 GA on Netbeans using ANY OS (was Mac OS X)

uPortal 2.6.0 requires Xalan 2.7.0. (This isn't actually a particularly strong requirement – you could retrofit it to use a different Xalan relatively easily, at the cost of no longer being on the default and preferred Xalan.) Apparently it is difficult to get NetBeans to cope with Xalan 2.7.0.

Netbeans 5.5(.1) comes with a bundled version of Tomcat (5.5.17). This is convenient as it offers developers an easy out-of-the-box solution for developing web applications. However it is problematic with uPortal 2.6.0 GA. Netbeans includes 2 additional jars in the common/endorsed directory in the bundled Tomcat (xml-apis.jar and xercesImpl.jar) that are not included with Tomcat as it is downloaded from Apache.

Work-Around #1: Installing a Tomcat and registering it with Netbeans

You can use Netbeans 5.5.1 with uPortal 2.6.0 on JDK 1.5 by following these steps:

  1. Download and unzip a 5.5.x version of Tomcat to a directory of your choice (say C:\tomcat\apache-tomcat-5.5.23)
  2. Edit the tomcat-users.xml file in the conf directory to add a manager role and a user for that role. For example, you can add the lines:
    <role rolename="manager"/>
    <user username="uportal" password="tomcat" roles="manager"/>
    
  3. In Netbeans, add the tomcat server.
    1. Open the Runtime view (Window | Runtime from the main menu or Ctrl+5).
    2. On the Servers node, right-click and select "Add Server...". This will start the "Add Server Instance" wizard.
    3. In the "Add Server Instance" dialog, choose Tomcat 5.5 from the "Server:" combobox
    4. In the "Name:" field, enter a name for your Tomcat instance (e.g. uPortal 2.6.0GA in Tomcat 5.5.23).
    5. Click the "Next > " button.
    6. In the "Add Server Instance" dialog, enter the path to your Tomcat install in the "Catalina Home:" field.
      1. If you want to specify a separate directory for your Catalina Base directory, check the "Use Private Configuration Folder (Catalina Base)" checkbox.
    7. Enter the name of the manager you entered in your tomcat-users.xml file in the "Username:" and "Password:" fields.
    8. Click the "Finish" button.
    9. You will see your new server instance under the "Servers" node in the "Runtime" view.
  4. Set up uPortal as a web project in Netbeans. See Gregg Sporar's 4-part series for configuring uPortal to take advantage of Netbeans' IDE features. There are some Tomcat items that don't apply with the current version of uPortal.
  5. Open the Files view (Window | Files from the main menu or Ctrl+2).
  6. Open the build.properties file.
  7. Set the server.home and server.base properties and save the file.
  8. Run the initportal target.
  9. Start the new Tomcat instance in Netbeans from the Runtime view.
  10. Expand the Tomcat instance node and then expand the "Web Applications" node. Right-click on uPortal and select "Open in Browser"

From here, you can start using uPortal as usual.

Work-Around #2: Modify Netbeans Bundled Tomcat Files.

This option is a little riskier as the bundled Tomcat has been set up for maximum possible backward compatibility with previous JDKs. The changes described here should be made so that they can be rolled back easily if you run in to trouble with other development projects.

  1. Locate the setclasspath.sh file on Unix based systems or setclasspath.bat for Windows based systems in the $NETBEANS_HOME/enterprise3/apache-tomcat-5.5.17/bin directory.
  2. Edit this file as follows:
    1. For setclasspath.sh, find the following block:
      # enable the compatibility pack if starting on JDK 1.4
      if [ "$NB_TOMCAT_JDK" = "1.4" ]; then
        # Set the default -Djava.endorsed.dirs argument
        JAVA_ENDORSED_DIRS="$BASEDIR"/common/endorsed
      fi
      
      and change it to
      # enable the compatibility pack if starting on JDK 1.4
      # if [ "$NB_TOMCAT_JDK" = "1.4" ]; then
        # Set the default -Djava.endorsed.dirs argument
        JAVA_ENDORSED_DIRS="$BASEDIR"/common/endorsed
      # fi
      
    2. For setclasspath.bat, find the following block:
      rem enable the compatibility pack if starting on JDK 1.4
      if not "%NB_TOMCAT_JDK%" == "1.4" goto noEndorsed 
        rem Set the default -Djava.endorsed.dirs argument
        set JAVA_ENDORSED_DIRS=%BASEDIR%\common\endorsed
      
      and change it to
      rem enable the compatibility pack if starting on JDK 1.4
      rem if not "%NB_TOMCAT_JDK%" == "1.4" goto noEndorsed 
        rem Set the default -Djava.endorsed.dirs argument
        set JAVA_ENDORSED_DIRS=%BASEDIR%\common\endorsed
      
  3. In the $NETBEANS_HOME/enterprise3/apache-tomcat-5.5.17/common/endorsed rename xml-apis.jar and xercesImpl.jar to something without a .jar extension.
  4. Restart Netbeans.
  5. Set up uPortal as a web project in Netbeans. See Gregg Sporar's 4-part series for configuring uPortal to take advantage of Netbeans' IDE features. There are some Tomcat items that don't apply with the current version of uPortal.
  6. Open the Files view (Window | Files from the main menu or Ctrl+2).
  7. Open the build.properties file.
  8. Set the server.home and server.base properties and save the file.
  9. Run the initportal target.
  10. Start the bundled Tomcat instance in Netbeans from the Runtime view.
  11. Expand the Tomcat instance node and then expand the "Web Applications" node. Right-click on uPortal and select "Open in Browser"

From here, you can start using uPortal as usual.

Netbeans Updates

An issue was filed with the Netbeans development team regarding this. As it turns out, the extra jar files are in the common/endorsed directory for backward compatibility with JDK 1.4 and below. When Netbeans is used with a JDK newer than 1.4, the endorsed directory is not being read, hence the error message that Xalan 2.7.0 can't be found. Netbeans 6.0 comes with an unmodified Tomcat 6 meaning that there is no undocumented or unexpected behavior like this to maintain any kind of backward compatibility. You will need to follow the work-around steps if you want to use Netbeans with uPortal.

2. initportal ANT task requires Internet Connectivity

from uportal-user@lists.ja-sig.org :

Cris J Holdorph wrote:

<snip/>

To sum up, I believe the issues with deployPortletApp (and drew gives
the latest version below) are with people trying to do "ant
initportal" from machines without general internet connectivity.

The current "ant initportal" will still not run without internet
connectivity. Just pull out your internet connection and try it.

Drew Wills wrote:

<snip/>

It turns out he wasn't able to deploy any portletApp that contains a
web.xml file with a <!DOCTYPE> declaration like the following:

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

It looks as though the XML parser will always try to load the DTD
from java.sun.com, even if validation is turned off. I suppose it
makes sense, since the DTD may contain entities (or default
attributes?) used in the document.

This means that the 'deployPortletApp' target requires an Internet
connection, or (alternately) someone must manually remove the DTD
references or entire <!DOCTYPE> declarations (it works without them)
from the web.xml files of any portletApps that will be deployed.

For comparison, the previous deployer used the WebAppDtdResolver
class to intercept the XML parser's attempt to load a DTD and supply
a local copy. The DTD to use was hard-coded (the 'systemId'
parameter was not even referenced), such that all web.xml files
essentially referenced the servlet spec 2.3 DTD... which is of course
the major problem the new deployer fixes.