<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>NetBeans 5.5 Visual Web Pack Release Notes</title>
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
        <meta name="description" content="This guide provides information regarding changes to NetBeans Visual Web Pack 
        from release to release, notes on configuration and known issues, and links to other Visual Web Pack documentation.">
        <meta name="keywords" content="frequently asked questions, configuration, FAQ"> 
    </head> 
    <body> 
        <a name=top></a> 
        <h1>NetBeans Visual Web Pack 5.5 Release Notes </h1> 
        <!-- <p>Last Updated: October 2006</p> -->
        <p>NetBeans Visual Web Pack 5.5 provides an environment for rapidly building web applications with Ajax-enabled JavaServer Faces components, support for drag-and-drop binding to data sources, and more. </p> 
        <p><b>Contents</b></p> 
        <ul>         
            <li> <a href="#sysreq" title="Prerequisites">System Requirements</a> </li> 
            <li> <a href="#configinfo" title="Configuration Information">Configuration Information</a> </li> 
            <li><a href="#sampleapp">Sample Applications </a></li>
            <li><a href="#changenotes">Change Notes </a></li>
            <li><a href="#knownissues">Known Issues</a></li>
            <li><a href="#documentation">Documentation</a></li> 
            <li> <a href="#more_information">More Information</a></li> 
        </ul> 
        <br>
              <p><b>Note: </b>The Ajax components included with NetBeans Visual Web Pack 5.5 are samples only, 
        and are not meant for production applications. </p>
        <p><b>Note: </b>Update 1 for NetBeans Visual Web Pack is now available. See the <a href="#changenotes">Change Notes</a> for more information </p>
        
        <!-- PREREQUISITES -->
        <h2><a name=sysreq></a>System Requirements</h2> 
        <p>This topic specifies the prerequisites that must be met before you start to install NetBeans Visual Web Pack 5.5.</p> 
        <blockquote> 
            <h3>System Setup</h3> 
            <p>The following table lists the minimum hardware and operating system requirements to run NetBeans Visual Web Pack 5.5:</p> 
            <table BORDER=1 CELLPADDING=4 CELLSPACING=3 summary="minimum h/w and OS specs">
                <col width=36*> 
                <col width=36*> 
                <col width=36*> 
                <col width=36*> 
                <col width=36*> 
                <col width=77*> 
                <tr valign=top> 
                    <th width=14%> <p> 
                    Platform</p></th> 
                    <th width=14%> <p>CPU</p></th>  
                    <th width=8%> <p align="center">RAM</p></th> 
                    <th width=8%> <p>Disk Space</p></th> 
                    <th width=20%> <p>Operating System</p></th> 
                    <th width=24%> <p>Supported Browsers</p></th> 
                </tr> 
                <tr valign=top> 
                    <td width=14%> <p>Solaris SPARC</p></td> 
                    <td width=14%> <p>UltraSPARC III at 750-MHz processing speed</p></td> 
                    <td width=8%> <p align="center">1 GB </p></td> 
                    <td width=8%> <p align="center">130 MB </p></td> 
                    <td width=20%> <p>Solaris 10 OS</p></td> 
                    <td width=24%> <p> Sun-supported Mozilla 1.7 </p></td> 
                </tr> 
                <tr valign=top> 
                    <td width=14%> <p>Solaris (x86 Platform Edition)</p></td> 
                    <td width=14%> <p>Intel Pentium 4 (or equivalent) at 1 GHz processing speed</p></td> 
                    <td width=8%> <p align="center">1 GB</p></td> 
                    <td width=8%> <p align="center">130 MB</p></td> 
                    <td width=20%> <p>      Solaris 10 OS</p></td> 
                    <td width=24%> <p> Sun-supported Mozilla 1.7 </p></td> 
                </tr> 
                <tr valign=top> 
                    <td width=14%> <p>Microsoft Windows</p></td> 
                    <td width=14%> <p>Intel Pentium 4 (or equivalent) at 1 GHz processing speed</p></td> 
                    <td width=8%> <p align="center">1 GB</p></td> 
                    <td width=8%> <p align="center">130 MB</p></td> 
                    <td width=20%> <p>Windows 2000 Professional Edition (Service Pack 4), <br>
                            Windows XP Professional Edition (Service Pack 2)<br>
                    </p></td> 
                    <td width=24%> <p>Internet Explorer 5.5 Service Pack 2 (Windows 2000)<br>
                            Internet Explorer 6 Service Pack 2 (Windows XP)
                    </p></td> 
                </tr> 
                <tr valign=top> 
                    <td width=14%> <p>Linux </p></td> 
                    <td width=14%> <p>Intel Pentium 4 (or equivalent) at 1 GHz processing speed</p></td> 
                    <td width=8%> <p align="center">1 GB</p></td> 
                    <td width=8%> <p align="center">130 MB</p></td> 
                    <td width=20%> <p>Red Hat Fedora Core 3 (except when running in the zh_CN locale and possibly other Asian locales - see the Known Issue <a href="#render">Rendering Problems</a> below.)
                    </p></td> 
                    <td width=24%> <p>Firefox 1.0.4 (minimum) </p></td> 
                </tr> 
                <tr valign=top> 
                    <td width=14%> <p>Mac OS</p></td> 
                    <td width=14%> <p>1 GHz PowerPC G4<br>
                    1.83 GHz Intel Dual Core </p></td> 
                    <td width=8%> <p align="center">1 GB</p></td> 
                    <td width=8%> <p align="center">130 MB</p></td> 
                    <td width=20%> <p>Macintosh OS 10.4, 10.4.5 </p></td> 
                    <td width=24%> <p>Safari 1.2.1 minimum (Safari 2 minimum for OS 10.4.5), Mozilla 1.6</p></td> 
                </tr> 
            </table><br><br>
            <h3>Required Software</h3> 
            <p>The following software must be installed before you install NetBeans Visual Web Pack 5.5:</p> 
            <ul> 
                <li><a href="http://services.netbeans.org/downloads/" target="_blank">NetBeans IDE 5.5</a>.</li> 
                <li><a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">Java SE Development Kit (JDK) 5.0 Update 6 (version 1.5.0_06)</a> or higher.<br> 
                    <br>
                    If you do not have an installation of JDK 5.0 Update 6 or higher, you cannot proceed with the installation. You can download this JDK from the <a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">Java SE Downloads</a> page. <br>
                    <br>
                    Note that Mac OS X installations require   Java 2 Standard Edition (J2SE) 5.0  Release 4. 
                You can download this JDK from the <a href="http://www.apple.com/support/downloads/" target="_blank">Apple Downloads page</a>. Search for &quot;J2SE&quot; to locate this release. </li>
                <li> An application server <br> 
                    <br> 
                To take advantage of Visual Web Pack's sample applications and databases, and to develop visual web applications using Java EE5, use Sun Java System Application Server 9, Platform Edition, the open source Java EE 5 application server. For more information, see <a href="http://www.sun.com/software/products/appsrvr/index.xml" target="_blank">Java EE Downloads</a>. </li> 
            </ul> 
            <br>
            <h3>Supported Technologies</h3>
            <p><b>NetBeans Visual Web Pack 5.5  supports the following technologies:</b></p>
            <ul>
                <li>Enterprise JavaBeans (EJB) 3.0</li>
                <li>JAX-WS 2.0</li>
                <li>Java Persistence (JSR-220)</li>
                <li>JavaServer Faces 1.2 (JSR-127)</li>
                <li>Java Servlet 2.5</li>
                <li>JavaServer Pages (JSP) 2.1</li>
                <li>Struts 1.2.9</li>
                <li>Java API for XML-based Remote Procedure Calls (JAX-RPC) 1.6</li>
                <li>Java APIs for XML Registries (JAXR) 1.0</li>
                <li>Java API for XML Processing (JAXP) 1.2</li>
                <li>JavaServer Pages Standard Tag Library 1.1</li>
            </ul>
            <div class="greybox" style="">
                <p><b>Note:</b> using versions of JBoss, WebLogic, or Struts
                    other than those explicitly listed could result in unpredictable IDE behavior
                because they are External interfaces and not controlled by the project team. </p>
            </div>
            <p><b>NetBeans IDE 5.5  has been tested with the following application servers:</b></p>
            <ul>
                <li>Sun Java System Application Server PE 9.0 Update Release 1</li>
                <!--<li>Sun Java System Application Server PE 8.1 update 2</li>-->
                <li>Sun Java System Application Server PE 8.2</li>
                <li>Tomcat 5.5.17</li>
                <li>JBoss 4.0.4</li>
                <li>WebLogic 9.1</li>
            </ul>
            <div class="greybox">
                <p>If you are using the GlassFish application server, note that it is recommended to
                run the final build of GlassFish V1 UR1 in order to work with NetBeans IDE 5.5 .</p>
            </div>
			           <h3><a name="sup_dat"></a>Supported Databases, JDBC Drivers, and Deployment Containers</h3> 
            <p>NetBeans Visual Web Pack 5.5 is tested on the following databases and drivers: 
            <ul><li><a href="#oracleoracle">Oracle Driver / Oracle Database</a></li>
                <li><a href="#mssql">Microsoft Driver / SQL Server Database</a></li>
                <li><a href="#ibmdb2">IBM Driver / DB2 Database</a></li>
                <li><a href="#mysqlmysql">MySQL Driver / MySQL Database </a></li>
                <li><a href="#dd">DataDirect / Oracle/SQLServer/DB2/Sybase </a></li>
            </ul>
            <p class="titlectable"><a name="oracleoracle"></a>Oracle driver tested on the Oracle database:
          <table BORDER=1 CELLPADDING=4 CELLSPACING=3 summary="oracle driver info">
                    <col width="1*"><col width="3*"><tr><td>Driver Location</td><td><a href="http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_10201.html" target="_blank">Oracle Database 10g Release 2 JDBC Drivers</a></td>
                    </tr>
                    <tr>
                        <td>Driver Versions</td>
                        <td>Oracle Database 10g  Release 2 (10.2.0.2)
                    </td></tr>
                    <tr>
                        <td>Driver JAR File</td>
                        <td><tt> ojdbc14.jar </tt></td>
                    </tr>
                    <tr>
                        <td>Driver Classnames</td>
                        <td> oracle.jdbc.driver.OracleDriver </td>
                    </tr>
                    <tr>
                        <td>URL Formats</td>
                        <td> jdbc:oracle:thin:@//<em>hostname</em>:<em>port</em>/<em>database</em></td>
                    </tr> 
                    <tr>
                        <td>Example URL</td>
                        <td> jdbc:oracle:thin:@//localhost:1521/ora9i </td>
                </tr></table>
            </p>
            <p><a name="mssql"></a><span class="titlectable">Microsoft driver tested on the SQL Server database:</span> 
          <table BORDER=1 CELLPADDING=4 CELLSPACING=3 summary="ms sql driver info">
                    <col width="1*"><col width="3*"><tr><td>Driver Location</td>
                        <td><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6D483869-816A-44CB-9787-A866235EFC7C&displaylang=en" target="_blank">Microsoft SQL Server 2005 JDBC Driver 1.1</a></td>
                    </tr>
                    <tr><td>Driver Version</td>
                        <td>Microsoft SQL Server 2005 JDBC Driver 1.1<br>
                            <tt>sqljdbc_1.1.1501.101_enu.tar.gz
                        </tt></td>
                    </tr>
                    <tr>
                        <td>Driver JAR File</td>
                        <td><tt>sqljdbc.jar</tt></td>
                    </tr>
                    <tr><td>Driver Classname</td><td> com.microsoft.sqlserver.jdbc.SQLServerDriver </td>
                    </tr>
                    <tr><td>URL Format</td>
                        <td> jdbc:sqlserver://<em>hostname</em>:1433;databaseName=<em>database</em>;selectMethod=cursor </td>
                    </tr>
                    <tr><td>Example URL</td><td> jdbc:sqlserver://localhost:1433;databaseName=travel;selectMethod=cursor </td>
            </tr></table></p>
            <p class="titlectable"><a name="ibmdb2"></a>IBM drivers tested with the DB2 database:
          <table BORDER=1 CELLPADDING=4 CELLSPACING=3 summary="ibm driver info" ><col width="1*"><col width="3*"><tr><td>Driver Location</td><td><a href="https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?pkgid=&S_SRCID=rjd&source=rjd&S_TACT=104AH+W42&S_CMP=&S_PKG=dl_82&s=z&ltype=input&l=All+Lang+per+ESD%2FPA+Media&mtype=input&m=download&id=2004-09-20+10%3A09%3A21.003415R&fam=&cat=" target="_blank">DB2 Personal Developer's Edition: Redistributable JDBC Type 4 Driver</a> (requires registration)</td>
                    </tr>
                    <tr><td>Driver Version</td><td>Redistributable DB2 JDBC Type 4 driver v8 fixpack 11
                            <br>
                        <tt>db2_jdbc_t4_fp11.zip</tt></td>
                    </tr>
                    <tr><td>Driver JAR Files</td>
                        <td>Type 4<ul>
                                <li><tt>db2jcc.jar</tt></li>
                                <li><tt>2jcc_license_cu.jar</tt></li>
                        </ul></td>
                    </tr>
                    <tr><td>Driver Classname</td><td> com.ibm.db2.jcc.DB2Driver </td>
                    </tr>
                    <tr>
                        <td>URL Format (Type 4) </td>
                        <td> jdbc:db2://<em>hostname</em>:<em>port</em>/<em>database</em> </td>
                    </tr>
                    <tr><td>Example URL</td>
                        <td>jdbc:db2://localhost:50002/sample</td>
            </tr></table> </p>
            <p><b>Note: </b>The IBM drivers support both Type 2 (native) and Type 4 (pure Java). To force the drivers to run in Type 4, add a property:
            driverType = 4 when connecting to the database.</p>
			<p class="titlectable"><a name="mysqlmysql"></a>MySQL drivers tested with the MySQL database:
            <table BORDER=1 CELLPADDING=4 CELLSPACING=3 summary="ibm driver info" ><col width="1*"><col width="3*"><tr><td>Driver Location</td>
            <td><a href="http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.0.3.tar.gz/from/pick" target="_blank">Download Connector/J 5.0.3</a> (tar.gz)<br>
			<a href="http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.0.3.zip/from/pick" target="_blank">Download Connector/J 5.0.3</a> (zip)</td>
                    </tr>
                    <tr><td>Driver Version</td><td> MySQL<sup>&reg;</sup> Connector/J  5.0.3 
                        </td>
                    </tr>
                    <tr><td>Driver JAR Files</td>
                        <td>mysql-connector-java-5.0.3-bin.jar</td>
                    </tr>
                    <tr><td>Driver Classname</td>
                    <td> org.gjt.mm.mysql.Driver</td>
                    </tr>
                    <tr>
                        <td>URL Format</td>
                        <td> jdbc:mysql://<em>hostname</em>:<em>port</em>/<em>database</em><br>
                        jdbc:mysql://<em>hostname</em>/<em>database</em>    </td>
                    </tr>
                    <tr><td>Example URL</td>
                        <td>jdbc:mysql://localhost:3306/sample<br>
                        jdbc:mysql://localhost/sample</td>
            </tr></table> </p>
			
            <p class="titlectable"><a name="dd"></a>DataDirect drivers tested with Oracle, SQL Server, DB2 and Sybase databases: </p>
            <table BORDER=1 CELLPADDING=4 CELLSPACING=3 summary="datadirect driver info"><col width="1*"><col width="3*"><tr><td>Driver Location</td><td><a href="http://www.datadirect.com/downloads/registration/connect_jdbc/index.ssp" target="_blank">DataDirect Connect for JDBC, Release 3.6 Service Pack 1</a></td>
                </tr>
                <tr>
                    <td>Driver Versions</td>
                    <td>DataDirect Connect for JDBC - 3.6<br>
                        DataDirect Connect for JDBC - 3.6.07
                </td></tr>
                <tr>
                    <td>Driver <tt>.jar</tt> Files</td><td>DataDirect Driver <tt>.jar</tt> Files 
                        <ul>
                            <li><tt>base.jar</tt></li>
                            <li><tt>util.jar</tt></li>
                            <li><tt>spy.jar</tt></li>
                            <li><tt>resource.jar</tt></li>
                            <li><tt>oracle.jar</tt></li>
                            <li><tt>sybase.jar</tt></li>
                            <li><tt>sqlserver.jar</tt></li>
                            <li><tt>db2.jar</tt></li>
                            <li><tt>informix.jar</tt></li>
                    </ul></td>
                </tr>
                <tr>
                    <td>Driver Classnames</td>
                    <td>DataDirect Driver Classes
                        <ul>
                            <li>com.ddtek.jdbc.oracle.OracleDriver</li>
                            <li>com.ddtek.jdbc.sqlserver.SQLServerDriver</li>
                            <li>com.ddtek.jdbc.db2.DB2Driver</li>
                            <li>com.ddtek.jdbc.sybase.SybaseDriver</li>
                </ul></td></tr>
                <tr>
                    <td>URL Formats</td>
                    <td></li>
                        </ul>
                        DataDirect URL Formats
                        <ul>
                            <li>jdbc:datadirect:oracle://<em>server_name</em>[:<em>portNumber</em>];SID=<em>database</em></li>
                            <li>jdbc:datadirect:sqlserver://<em>server_name</em>[:<em>portNumber</em>];databaseName=<em>database</em></li>
                            <li>jdbc:datadirect:db2://<em>server_name</em>[:<em>portNumber</em>]databaseName=<em>database</em></li>
                            <li>jdbc:datadirect:sybase://<em>server_name</em>[:<em>portNumber</em></li>
                </ul></td></tr>
                <tr>
                    <td>Example URLs</td>
                    <td><tt>jdbc:datadirect:oracle://localhost;SID=ora9i</tt><br>
                        <tt>jdbc:datadirect:sqlserver://localhost:1433;DatabaseName=travel;SelectMethod=cursor</tt><br>
                    <tt>jdbc:datadirect:db2://localhost:50002;databaseName=sample</tt></td>
            </tr></table>
        </blockquote>
            <h3>Firewall Applications</h3> 
            <p>Enabled firewall applications can prevent some components from being configured correctly during the installation process. Consult your firewall documentation to determine if your firewall should be disabled before installation.</p> 
        </blockquote> <p align=center><a href="#top">top</a></p>
        <!-- CONFIG INFO -->
        <h2><a name=configinfo></a>Configuration Information</h2> 
        <p>Information on configuring NetBeans Visual Web Pack 5.5 for databases and applications servers can be found in the <a href="vwp-install.html#configinfo">Installation Guide</a>. </p>
        <p>If Visual Web Pack is configured to use Sun Java System Application Server 9, Platform Edition then a bundled database server (Java DB) is included.
            For more information on Java DB, see <a href="http://developers.sun.com/prodtech/javadb/" title="Java DB at a Glance" target="_blank">Java DB at a Glance</a>. 
            Once the Sun Java System Application Server is configured, and after the IDE is restarted, a sample database named
            <b>Travel</b> and a database connection for <b>Travel</b> are configured.
            If the home directory, located under <tt>&lt;HOME&gt;/.netbeans/5.5</tt>, is removed, the databases will remain intact until the next time Sun Java System Application Server is reconfigured. 
        The sample database directory is  located in the home directory <tt>.netbeans-derby</tt>. </p>
        <p><span class="bold"><b>Note: </b></span>Before resolving a databse connection to the Travel database, you must start the Java DB. </p>
        <blockquote>
            <h3><a name="bundledDB"></a>Bundled Database</h3>
            <p>If you install Sun Java System Application Server, you can set up the bundled Java DB database to work with NetBeans Visual Web Pack 5.5 as well. </p>
            <p>To set up the Java DB server for a standalone NetBeans IDE 5.5 installation:
            <ol>
                <li>Launch the IDE.</li>
                <li>Register Sun Java System Application Server in the NetBeans IDE Runtime window as described in the <a href="vwp-install.html#config_sjas">Installation Guide</a>.
                <li>Select Tools &gt; Options, and in the Options dialog, click Advanced Options.</li>
                <li>Expand IDE Configuration &gt; Server and External Tool Settings and select Java DB Database to verify the database settings.</li>
            </ol>
            <h3>Restoring Database Connections<a name="restdbcon"></a></h3>
            <p>When opening Java Studio Creator projects that have components bound to rowsets in Visual Web Pack, the IDE fails to find the data sources. When importing projects into Visual Web Pack, the IDE advises you to backup the project as you will not be able to re-open it in Java Studio Creator. To resolve missing data connections, you first add the database driver and then reconnect the project to the database. You do not need to add the database driver if the project uses for Java DB, and you installed Sun Java System Application Server as described under <a href="#bundledDB">Bundled Database</a>. </p>
            <div>To add the database driver: </div>
            <ol>
                <li>Open the Runtime window. </li>
                <li>Expand the Databases node. Right-click Drivers and and select New Driver. </li>
                <li>In the New JDBC Driver window, click Add. Navigate to the database's <tt>.jar</tt> file and click Open.</li>
                <li>Select the Driver Class, type a name for the database (or keep the default), and click OK. </li>
                <li>Right-click the Databases node and select New Connection.</li>
                <li>
                    <p>In the New Database Connection dialog: </p>
                    <ol type="a">
                        <li>Select the database from the Name drop-down list.</li>
                        <li>Type the Database URL.</li>
                        <li>Type the user name and password. </li>
                        <li>Click OK. </li>
                    </ol>
                </li>
                <li>Under the Databases node, Right-click the database URL associated with the database and Right-click the database connection and choose connect. You may be prompted for a password.</li>
            </ol>
            <p>See <a href="#sup_dat">Supported Databases, JDBC Drivers and Deployment Containers</a> for more information on drivers and database URLs.</p>
            <div>To resolve the database connection:</div>
            <ol><li>
                    <p>Open the Projects window. The IDE searches for missing data connections. Note that the larger the project, the longer this process takes.</p>
                When the IDE determines that data connections are missing, it badges the project node icon and displays the project name in red.</li>
                <li>Right-click the project with the missing data connection, and choose Resolve Database Problems from the pop-up menu.</li>
                <li>In the Resolve Data Source(s) dialog, select the database name and click Add Data Connection.</li>
                <li>
                    <p>In the Add Database Connection dialog, select your database from the Server Type drop down list,  provide the requested information, and click OK.</p>
                    For Java Studio Creator applications that use Java DB, type the User ID and Password associated with the application. For example, the User ID and Password for the CorporateTravelCenter project are both <tt>travel</tt>. The database URL has the following format: <tt>jdbc:derby://<em>host_name</em>:<em>port_number</em>/<em>database_name</em></tt>. For example, the database URL for the Travel database bundled with Java DB, on the default port is <tt>jdbc:derby://localhost:1527/travel</tt>.</li>
            </ol>
 
        <p align=center><a href="#top">top</a></p> 
        <!-- SAMPLE APPLICATIONS -->
        <a name="sampleapp"></a><h2>Sample Applications</h2>
        <p>To use any of Visual Web Pack's sample applications, you must create a new Visual Web project that uses the application, and then connect the project to the sample database if one is provided.</p>
        <p>
            Updates to the Visual Web Pack might include new sample databases and sample applications. After an update, to see if there are new sample applications, choose File > New Project to open the New Project wizard, and then choose Samples > Visual Web to see the list of sample applications in the right pane. To create a sample application:
    <ol>
                <li>
                    <p>Choose File > New Project.</p>The New Project Wizard opens.
                </li>
                <li>In the Categories pane of the New Project Wizard, expand the Samples node and select Visual Web. </li>
                <li>Select the sample project from the Projects pane and click Next to continue.</li>
                <li>
                    <p>Type the name of the project in the Project Name field.</p>
                The IDE suggests a name that you can edit.</li>
                <li>
                    <p>Based on the project name, the IDE suggests the Project Location and Project Folder. You can change the project location.</p>
                    The IDE creates a folder name based on the information you enter. The IDE suggests a default Java package for the project. You can change the Java package name by typing in a new name.
      <li>Ensure that Java Blueprints is selected in the Source Structure drop-down list.</li>
                    <li>
                        <p>Ensure that the Sun Java System Application Server is selected in the Server drop-down list.
                        </p>
                    If you do not see the Sun Java System Application Server in the list, you must register the server with NetBeans as described in the Help topic Registering a Sun Java System Application Server Instance.</li>
                    <li>Select Java EE5 from the Java EE Version drop-down list, and then click Finish to create the project.
                    </li>
                </li>
    </ol>
        </p>
        <p align=center><a href="#top">top</a></p>
        <!-- KNOWN ISSUES -->
        <h2><a name="changenotes"></a>Change Notes</h2>
        This section describes changes to NetBeans Visual Web Pack from release to release.
		<h3><a name="changenotes55ml"></a>NetBeans Visual Web Pack 5.5 ML (Multi-language)<br>
		</h3>
		<p>The ML release adds language support for Japanese, Simplified Chinese, and Brazilian Portuguese. The following issues have also been addressed in this release:</p>
		<!-- http://monaco.sfbay/detail.jsf?cr=6489989 -->
		<b><span style="color: rgb(4, 84, 145);">Internet Explorer 7 AddRemove Listbox Headers</span></b>
		<blockquote>
		  <p><strong>Description: </strong>Headers for adding and removing listboxes did not extend to edge of their associated listboxes. This has been fixed by removing the <tt>float:left</tt> style in the <tt>AddRmvHwzDiv</tt> class selector.</p>
		</blockquote>
		<!-- http://monaco.sfbay/detail.jsf?cr=6504722 -->
		<b><span style="color: rgb(4, 84, 145);">Internet Explorer 7 Anchors</span></b>
		<blockquote>
		  <p><strong>Description: </strong>Formerly, in pages created with hyperlinks pointing to an anchor, IE 7 did not automatically jump to the anchor. </p>
		</blockquote>
		<!-- http://monaco.sfbay/detail.jsf?cr=6489989 -->
		<b><span style="color: rgb(4, 84, 145);">AbstractDesignInfo.acceptFiliation restricts drops on ActionSource </span></b>
		<blockquote>
		  <p><strong>Description: </strong>This fix allows non Woodstock-based ActionSource components to become parent components.</p>
		</blockquote>
        <h3>NetBeans Visual Web Pack 5.5 FCS </h3>
        <br><b><span style="color: rgb(4, 84, 145);">Upgrading to Production Release</span></b>
        <blockquote><p>Instructions for upgrading from NetBeans Visual Web Pack 5.5 Technology Preview are in the <a href="vwp-install.html#upgrade">Installation Guide</a>.</p></blockquote>
        <b><span style="color: rgb(4, 84, 145);">Downloaded  component libraries no longer display automatically in the Palette.</span></b>
        <blockquote>
            <p><strong>Description: </strong>The NetBeans Visual Web Pack 5.5 UI has changed. To display a component library in the Palette, you just first import its complib file into the IDE, then add it to a project. Imported complibs do not display in all projects, only in projects to which they have been added. 
            <p>For more information, see the tutorial <a href="../../../kb/55/vwp-ajaximportcomponents.html">Downloading and Importing Ajax and Other Components</a> and the Help topic About Component Libraries.</p>
        </blockquote> 
		    <b><span style="color: rgb(4, 84, 145);">Update 1 Available for NetBeans Visual Web Pack.</span></b>
        <blockquote>
            <p><strong>Description: </strong>This update fixes the <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=90292">InSync Source Modeler bug</a> (Visual Web Pack breaks Drag and Drop functionality in SOA projects). </p>            			
			<p>To install this update:
			<ol><li>Choose Tools > Update Center from the main menu. This will launch the Update Center wizard. </li>
			<li>In the Update Center Wizard, select NetBeans Visual Web Pack Update Center and click Next.</li>
			<li>In the panel labeled Select Modules to Install, select <tt>InSync Source Modeler Module</tt>, click Add to include in the install, and click Next.</li>
			<li>Accept the license agreement. Once the modules are downloaded, click Finish. You will be prompted to restart the IDE to complete the installation.</li>
			</ol>
			<p><strong>Note: </strong>Update 1 is for NetBeans Visual Web Pack 5.5 release. This update is visible to NetBeans Visual Web Pack 5.5 Technology Preview users also, but the update will fail on Technology Preview with a message that module dependencies are not satisfied. Technology Preview users upgrade to the Production Release as described in the <a href="vwp-install.html#upgrade">Installation Guide</a>. </p>
			<p>This update also fixes the NetBeans Enterprise Pack 5.5 users' issue of not being able to Drag and Drop in SOA projects. </p>
    </blockquote> 
        <p align=center><a href="#top">top</a></p> 
        <!-- KNOWN ISSUES -->
        <h2><a name=knownissues></a>Known Issues</h2> 
        <p> This section covers unresolved issues for this release. For further information, see the <a href="http://wiki.netbeans.org/wiki/view/NetBeansVWPUserFAQ">NetBeans Visual Web Pack FAQ</a>. </p>
        <blockquote>
            <h3>Sample Database</h3>
            <!--  Bug ID: 6472618 http://bt2ws.central.sun.com/CrPrint?id=6472618  -->
            <br>
            <b><span style="color: rgb(4, 84, 145);">Sun Application Server 9 Platform Edition requires IDE restart.</span></b>
            <blockquote>
                <p><strong>Description: </strong>To use the Travel Database with Sun Application Server 9 PE, you must restart the IDE after choosing the application 
                server in the Servers window.</p>
            </blockquote> 
            <h3>Clean and Build</h3><br>
            <!--  Bug ID: 6467949 http://bt2ws.central.sun.com/CrPrint?id=6473912  -->
            <b><span style="color: rgb(4, 84, 145);">Clean and Build fails after application deployment.</span></b>
            <blockquote>
                <p><strong>Description: </strong>Application deployment returns the error "Unable to delete file <tt>...\build\web\WEB-INF\lib\appbase.jar</tt>".</p>
                <p><strong>Workaround: </strong>Stop and restart the application server and deploy the application again.            </p>
            </blockquote>
			 <h3>Converters</h3>
             <!-- http://bt2ws.central.sun.com/CrPrint?id=___  --><br>
<b><span style="color: rgb(4, 84, 145);"> JSF 1.2 converter runtime error messages are different than those in JSF 1.1.</span></b>
<blockquote>
  <p><strong>Description: </strong>The conversion error messages for JSF 1.2 are much more detailed than those in JSF 1.1. For more information, see the converter topics in the online help. </p>
  
</blockquote> 


 <h3>Vista Installation</h3>
  <!--  http://bt2ws.central.sun.com/CrPrint?id=___ --><br>
<b><span style="color: rgb(4, 84, 145);">Installation of NetBeans Visual Web Pack on the Vista operating system
will fail if the installer is not pointed to JDK 1.5_11 or later.</span></b>
<blockquote>
  <p><strong>Description: </strong>Although JAVA_HOME and PATH point to jdk1.5_11 or 6, the installer may still try to
  install based on an earlier installed JDK on the system.  </p>
  <p><strong>Workaround: </strong>Make sure that the installer is actually running on the later JDK by using the switch
    <tt>-is:javahome &lt;path to 1.5.0_11 home&gt;</tt>. </p>
</blockquote> 
            
            <h3>Button Appearance</h3><br>
            <!-- Bug ID: 6470992 http://bt2ws.central.sun.com/CrPrint?id=6470992 -->
            <b><span style="color: rgb(4, 84, 145);">Button text on the Editing Toolbar is missing or truncated.</span></b>
            <blockquote>
                <p><strong>Description: </strong>On Microsoft Windows XP, using the Windows XP display style, button text is replaced with ellipses. This problem is related to JDK 5.0 Update 8 (version 1.5.0_08).</p>
                <p><strong>Workaround: </strong>Change your display style to Windows Classic as follows:
                <ol>
                    <li>Choose Start > Settings > Control Panel.</li>
                    <li>On the Control Panel, double-click Display.</li>
                <li>On the Appearance Tab, choose Windows Classic style under Windows and Buttons.</li></ol>
            </blockquote>
			 <h3><a name="ie7buttons"></a>Buttons Display Incorrectly in IE7</h3>
<!--http://bt2ws.central.sun.com/CrPrint?id=___ --><br>
<b><span style="color: rgb(4, 84, 145);">When displayed in IE7, all button components may be rendered with an incorrect width. 
</span></b>
<blockquote>
  <p><strong>Description: </strong>This problem occurs when the button is placed using absolute positioning. For example, when NetBeans Visual Web Pack uses absolute positioning to place components in Grid Layout Mode, this problem may occur.</p>
  <p>IE7 expects a value to be specified for the width of buttons. If a width attribute is not specified, the width is set to <tt>width:auto</tt>, which results in the button's width being set to the entire available width of the button's container element. For example, if the button style has <tt>left=130px</tt> then the button will start at 130px left and will expand to the width of the <tt>&lt;body&gt; </tt>element. </p>
  <p><strong>Workaround: </strong> There are several different ways to solve this issue in NetBeans Visual Web Pack: 
  <ul>
  <li>Specify the width property for the button, or resize the button
      in the IDE to make the IDE assign a width to the button. </li>
  
  <li> In the IDE, drop the button into a Group Panel component to put the button inside a span tag. In this case there is no need to set the positioning as the IDE sets the positioning for the Group Panel component. For example, the JSP code of a Button inside a Group Panel component may look like this: 
 <pre class="examplecode">&lt;webuijsf:panelGroup binding=&quot;#{Page1.groupPanel1}&quot; id=&quot;groupPanel1&quot; style=&quot;position: absolute; left: 240px; top: 168px&quot;&gt;<br>    &lt;webuijsf:button binding=&quot;#{Page1.button1}&quot; id=&quot;button1&quot; text=&quot;Button&quot;/&gt;
&lt;/webuijsf:panelGroup&gt;</pre>
  </li>
  </ul>
  </blockquote> 
			
			
            <h3>Component Libraries and JBoss</h3><br>
            <b><span style="color: rgb(4, 84, 145);"> Components of the webui component library (based on JSF 1.1/J2EE 1.4), bundled with NetBeans Visual Web Pack 5.5, work poorly. </span></b>
            <blockquote>
                <p><strong>Description: </strong>When a project is created, the classpath on the container is checked and when a MyFaces implementation is found, that implementation takes precedence. Removing the MyFaces implementation forces the application to bundle the JSF-RI libraries.</p>
                <p><strong>Workaround: </strong>Move the following directory outside of the default directory before creating Visual Web Pack projects for that container: </p>
            <tt>JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/jsf-lib</tt></blockquote>
            <h3>Java EE5 Deployment</h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6479877 
            https://netbeans.org/bugzilla/show_bug.cgi?id=77122
            http://glassfish.dev.java.net/issues/show_bug.cgi?id=1197--><br>
            <b><span style="color: rgb(4, 84, 145);">Application deployment hangs.</span></b>
            <blockquote>
                <p><strong>Description: </strong>Java EE 5 deployment of applications to Sun Java System Application Server hangs 
                due to the server's deployment manager depending on code that is not thread safe. </p>
                <p>This issue seems limited to multiprocessor or multicore computers running Windows XP. </p>
                <p><strong>Workaround: </strong>Restart the IDE, then using the Server Manager:<ol><li>Restart the application server if necessary.</li><li>Undeploy all applications.</li>
                    <li>Redeploy the applications.</li></ol>
                If it is not possible to start or stop the application server, stop all Java processes via the task manager before restarting the IDE. </p>
            </blockquote>
            <h3>Renaming Project Folders</h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6481988--> <br> 
            <b><span style="color: rgb(4, 84, 145);">Renaming a project folder throws IllegalStateException.</span></b>
            <blockquote>
                <p><strong>Description: </strong>IDE throws <tt>IllegalStateException</tt> when reopening a project with a renamed folder or reopening a folder with a renamed page.</p>
                <p><strong>Workaround: </strong>Only rename folders from within the Source Packages node. Right-click the folder under this node and select Refactor > Rename from the pop-up menu. Note that the IDE does not currently support renaming the default Bean package.</p>
            </blockquote> 
            <h3>Binding to Data</h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6481512 --><br>
            <b><span style="color: rgb(4, 84, 145);">Binding a Drop Down List component to table data returns exception.</span></b>
            <blockquote>
                <p><strong>Description: </strong>Using MySQL, attempting to bind the Drop Down List component to table data returns an IllegalArgumentException.</p>
                <p><strong>Workaround: </strong>When the error occurs, close the Bind to Data dialog and open it again. If this fails, close and reopen the project.</p>
            </blockquote>
            
            <h3>ViewData SQL Command </h3>
            <!-- https://netbeans.org/bugzilla/show_bug.cgi?id=86276
            http://bt2ws.central.sun.com/CrPrint?id=6466706--><br>
            <b><span style="color: rgb(4, 84, 145);">Inserting a new line or space results in incorrect empty return.</span></b>
            <blockquote>
                <p><strong>Description: </strong>A query made in the View Data window that concludes with whitespace or a carriage return is not executed.</p>
                <!--  <p><strong>Workaround: </strong>Make sure commands end with a character rather than space or a carriage returns.</p>-->
            </blockquote>
            <h3> Web Services</h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6484142 --><br>
            <b><span style="color: rgb(4, 84, 145);">Web service package not visible under JDK 1.5_06 in projects using J2EE 1.4.</span></b>
            <blockquote>
                <p><strong>Description: </strong> In projects in which web services has been added, the import statement should autocomplete in the Java view (that is, the web service package should be visible to the application), but the IDE returns "No suggestions". </p>
                <p><strong>Workaround: </strong>Build the project first, then the Java source editor will provide suggestions. </p>
            </blockquote>
            <a name="kidistim"></a><h3>Distorted Images </h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6479271 --><br>
            <b><span style="color: rgb(4, 84, 145);">Background images are scrambled or missing in the browser upon postback.</span></b>
            <blockquote>
                <p><strong>Description: </strong>When a postback occurs, background images set via a background-image style with a relative URL, such as <tt>background-image: url(./resources/flower.gif)</tt>, are scrambled or missing in the browser.</p>
                <p><strong>Workaround: </strong>The following fix works for both Java EE 4 and EE5 projects. Manually set the background image using code such as the following:
                <pre class="examplecode">&lt;h:panelGrid binding=&quot;#{Page1.gridPanel1}&quot; id=&quot;gridPanel1&quot;
    style=&quot;background-image: url(/WebApplication1/resources/flower.gif); 
                height: 200px; left: 312px; top: 240px; position: absolute&quot; width=&quot;312&quot;/&gt;</pre>
                In some browsers, the Grid Panel in the above excerpt may need to have at least one child in order for the background image to appear. For instance, the child could  be a Static Text component with the <tt>escape</tt> property set to <tt>False</tt> and the <tt>text</tt> property set to a non-breaking space 
                (<tt>&amp;nbsp;</tt>): <pre class="examplecode">&lt;h:panelGrid binding=&quot;#{Page1.gridPanel1}&quot; id=&quot;gridPanel1&quot;<br>    style=&quot;background-image: url(/WebApplication1/resources/flower.gif); 
    height: 200px; left: 312px; top: 240px; position: absolute&quot; width=&quot;312&quot;&gt;<br>&lt;webuijsf:staticText binding=&quot;#{Page1.staticText1}&quot; escape=&quot;false&quot; id=&quot;staticText1&quot; text=&quot;&amp;amp;nbsp;&quot;/&gt;
                &lt;/h:panelGrid&gt;</pre>
                <p>Note that while this workaround is effective at runtime, it will cause the image to disappear at designtime.</p>
            </blockquote>
            <h3>Checkbox Component</h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6455276 --><br>
            <b><span style="color: rgb(4, 84, 145);">The readOnly property of the Checkbox and Checkbox Group components does not work,</span></b>
            <blockquote>
                <p><strong>Description: </strong> These components remain clickable even after setting its attribute to readOnly.</p>
                <p><strong>Workaround: </strong>Use the <tt>disabled</tt> attribute so that the component renders when it applies but must not be changed. </p>
                <p>Also, use scripting to prevent changes on an element that is readOnly. 
                Here, <tt>button1_action</tt> toggles the <tt>readOnly</tt> property of <tt>checkbox1</tt>:
                <pre class="examplecode">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br>&lt;jsp:root version=&quot;1.2&quot; xmlns:f=&quot;http://java.sun.com/jsf/core&quot; xmlns:h=&quot;http://java.sun.com/jsf/html&quot; 
            xmlns:jsp=&quot;http://java.sun.com/JSP/Page&quot; xmlns:webuijsf=&quot;http://www.sun.com/webui/webuijsf&quot;&gt;<br>    &lt;jsp:directive.page contentType=&quot;text/html;charset=UTF-8&quot; pageEncoding=&quot;UTF-8&quot;/&gt;<br>    &lt;f:view&gt;<br>        &lt;webuijsf:page binding=&quot;#{Page1.page1}&quot; id=&quot;page1&quot;&gt;<br>            &lt;webuijsf:html binding=&quot;#{Page1.html1}&quot; id=&quot;html1&quot;&gt;<br>                &lt;webuijsf:head binding=&quot;#{Page1.head1}&quot; id=&quot;head1&quot;&gt;<br>                    &lt;webuijsf:link binding=&quot;#{Page1.link1}&quot; id=&quot;link1&quot; url=&quot;/resources/stylesheet.css&quot;/&gt;<br>                    &lt;webuijsf:script binding=&quot;#{Page1.script1}&quot; id=&quot;script1&quot;&gt;&lt;![CDATA[<br>                        function preventIfReadOnly(element) {<br>                            if (element.readOnly != false) {<br>                                //element is readOnly, so prevent change by returning false<br>                                return false;<br>                            }<br>                            //allow change by returning true<br>                            return true;<br>                        }<br>                            ]]&gt;&lt;/webuijsf:script&gt;<br>                &lt;/webuijsf:head&gt;<br>                &lt;webuijsf:body binding=&quot;#{Page1.body1}&quot; id=&quot;body1&quot; style=&quot;-rave-layout: grid&quot;&gt;<br>                    &lt;webuijsf:form binding=&quot;#{Page1.form1}&quot; id=&quot;form1&quot;&gt;<br>                        &lt;webuijsf:checkbox binding=&quot;#{Page1.checkbox1}&quot; id=&quot;checkbox1&quot; label=&quot;Checkbox&quot; onClick=&quot;return preventIfReadOnly(this);&quot; style=&quot;position: absolute; left: 192px; top: 192px&quot;/&gt;<br>                        &lt;webuijsf:button actionExpression=&quot;#{Page1.button1_action}&quot; binding=&quot;#{Page1.button1}&quot; id=&quot;button1&quot;<br>                            style=&quot;position: absolute; left: 216px; top: 288px&quot; text=&quot;Toggle checkbox readOnly property&quot;/&gt;<br>                        &lt;webuijsf:messageGroup binding=&quot;#{Page1.messageGroup1}&quot; id=&quot;messageGroup1&quot; style=&quot;position: absolute; left: 432px; top: 120px&quot;/&gt;<br>                    &lt;/webuijsf:form&gt;<br>                &lt;/webuijsf:body&gt;<br>            &lt;/webuijsf:html&gt;<br>        &lt;/webuijsf:page&gt;<br>    &lt;/f:view&gt;<br>&lt;/jsp:root&gt;</pre></blockquote>
            <a name="i18n"></a> <h3>Internationalization</h3>
            <!--  http://bt2ws.central.sun.com/CrPrint?id=6498866 --><br>
            <b><span style="color: rgb(4, 84, 145);">URL property limited to ISO-8859-1 characters.</span></b>
            <blockquote>
                <p><strong>Description: </strong>Uploaded file components not displayed for the jp locale. File names appear correctly in the browser 
                    and in the log file, but the image does not display when the file name is in mbyte character sets. 
                When the orignal filename of an uploaded file contains UCS characters, the <tt>src</tt> attribute of the <tt>img</tt> tag is not rendered correctly. Thus when the browser fetches the image, it gets a File Not Found error and nothing appears in the browser window. </p>
                <p><strong>Workaround: </strong>Have the application limit the <tt>URL</tt> property to ISO-8859-1 characters. For example, provide a separate translation step from the ISO 10646 UCS character set to ISO-8859-1. It is best to avoid using UCS characters entirely. </p>  
            </blockquote> 
            <h3> Bundled Database </h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6483217 --><br>
            <b><span style="color: rgb(4, 84, 145);">Cannot connect to database for projects created before deletion of user directory and reinstallation of IDE.</span></b>
            <blockquote>
                <p><strong>Description: </strong>The JDBC driver is lost when the user directory is deleted, therefore the user cannot resolve missing data connections. </p>
                <p><strong>Workaround: </strong>Before deleting the user directory copy the <tt>jdbc-drivers</tt> folder to an external directory and return it to the user directory after reinstallation. </p>
            </blockquote> 
            <h3>Renaming Variables</h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=5097400 --><br>
            <b><span style="color: rgb(4, 84, 145);">When the user renames a property by selecting Bean Patterns > Property > Rename, the NetBeans IDE does not treat the rename as full refactoring. New names of variables renamed in this way are not propagated across a project. 
            </span></b>
            <blockquote>
                <p><strong>Description: </strong>The IDE renames getter and setter methods if the user answers <tt>Yes</tt> in the pop up dialog that covers these methods, however, other references to these methods are not updated. 
                    When an application is 
                deployed in which only the name of a variable, for example that of a bean property, is changed, the IDE throws a compiler error.</p>
            </blockquote> 
            <h3>JDBC Drivers</h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6476830 (replaces 6476831, 6476832, 6476855)
            https://netbeans.org/bugzilla/show_bug.cgi?id=86213 --> <br>
            <b><span style="color: rgb(4, 84, 145);">Applications utilizing data sources fail if JDBC driver is not copied to server.</span></b>
            <blockquote>
                <p><strong>Description: </strong>NetBeans does not copy the JDBC driver JAR files to the deployment container. </p>
                <p><strong>Workaround: </strong>Copy the JAR files manually into the container's class path. </p>
            </blockquote> 
            <h3>Woodstock Components</h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6490614 --><br>
            <b><span style="color: rgb(4, 84, 145);">Projects created in Visual Web Pack Technology Preview do not build in the production release.</span></b>
            <blockquote>
                <p><strong>Description: </strong>The IDE fails to copy all the contents of the WebUI components library at build time, resulting in build failure </p>
                <p><strong>Workaround: </strong>Remove the old WebUI components library and add the new WebUI components library as follows:
              <ol><li>In the Projects window, right-click on the project and select Properties.</li>
                        <li>Select Libraries, select the Web UI Components library package, and click Remove. Click OK to close the dialog.</li>
                        <li>Right-click on the project again and select Properties.</li>
                        <li>Select Libraries and click Add Library. In the Add Libraries dialog, select Web UI Components and click Add Library. In the Project Properties window, click OK.</li>
                        <li>Right-click the Project and select Clean and Build Project.</li>
              </ol>
                </p>
            </blockquote> 
			
			 <h3>Imported Projects</h3>
 <!--  http://bt2ws.central.sun.com/CrPrint?id=6478283 --><br>
<b><span style="color: rgb(4, 84, 145);">It is not possible to deploy the imported Java Studio Creator CorporateTravelCenter project on Sun Java System Application Server.</span></b>
<blockquote>
  <p><strong>Description: </strong>EJB clients fail to connect on imported projects. </p>
  <p><strong>Workaround: </strong>Edit the <tt>web/WEB-INF/sun-web.xml</tt> file by changing the jndi name from <tt>jdbc/Travel_RaveGenerated_1129222276</tt> to <tt>jdbc/Travel</tt>. </p>
</blockquote> 
			
			
            <!-- 
 <h3>Subject</h3>
  http://bt2ws.central.sun.com/CrPrint?id=___ <br>
<b><span style="color: rgb(4, 84, 145);">summary.</span></b>
<blockquote>
  <p><strong>Description: </strong>xyz </p>
  <p><strong>Workaround: </strong>BCD. </p>
</blockquote> 
-->
            <a name="buttonwidth"></a> <h3>Button Width in Internet Explorer</h3>
            <!--http://bt2ws.central.sun.com/CrPrint?id=6498140--> <br>
            <b><span style="color: rgb(4, 84, 145);">IE 7 only: Default button width not honored.</span></b>
            <blockquote>
                <p><strong>Description: </strong>When the button width is not explicitly set, IE 7 resizes the button to the width of the container. </p>
                <p><strong>Workaround: </strong>Explicitly set button widths in the Visual Designer. </p>
            </blockquote> 
            <h3><a name="kisession"></a>Session Data Lost in Internet Explorer</h3>
            <!-- http://bt2ws.central.sun.com/CrPrint?id=6482174  --><br>
            <b><span style="color: rgb(4, 84, 145);">IE 6 and IE 7 only: Session lost after navigating 20 pages.</span></b>
            <blockquote>
                <p><strong>Description: </strong>In projects with more than 20 pages, session data is lost and information saved in a session bean attribute is reset to Null once user navigates past about page 20. This is not an issue in Firefox or other browsers. </p>
                <p>If browser security is set to <tt>Medium</tt>, the session is renewed at about page 22; if set to <tt>High</tt>, the session continues to page 30. The session is maintained when cookies are disabled.</p>
                <p><strong>Workaround: </strong>In Internet Explorer:  </p>
                <ol>
                    <li>Select  Tools > Internet Options.</li>
                    <li>Select the Privacy tab.</li>
                    <li>Change settings from <tt>Medium</tt> (the default) to <tt>High</tt> or <tt>Block All Cookies</tt>.</li>
                    <li>Press OK.</li> 
                    <li>Restart all instances of Internet Explorer.</li>
                </ol> 
            </blockquote> 
			<!--  <h3>Drag and Drop</h3>
  https://netbeans.org/bugzilla/show_bug.cgi?id=90292+ <br>
<b><span style="color: rgb(4, 84, 145);">Drag and Drop fails in SOA projects</span></b>
<blockquote>
  <p><strong>Description: </strong>When both Visual Web Pack and NetBeans Enterprise Pack are installed, the Drag and Drop function does not work for WSDL files.</p>
  <p><strong>Workaround: </strong>BCD. </p>
</blockquote>  -->
            <!-- 
 <h3>Subject</h3>
  http://bt2ws.central.sun.com/CrPrint?id=___ <br>
<b><span style="color: rgb(4, 84, 145);">summary.</span></b>
<blockquote>
  <p><strong>Description: </strong>xyz </p>
  <p><strong>Workaround: </strong>BCD. </p>
</blockquote> 
            --><a name="render"></a>
            <h3>Rendering Problems</h3>
            <br>
            <b><span style="color: rgb(4, 84, 145);">IDE text unreadable on Red Hat Fedora Core 3 using the zh_CN locale.</span></b>
            <blockquote>
                <p><strong>Description: </strong>When running the IDE on Red Hat Fedora Core 3 in the zh_CN locale and possibly some other Asian locales, the text may be unreadable because of rendering problems. This problem is a result of font support issues with the JDK on the Fedora Core distribution, so this problem also might apply to other Java applications running on Fedora Core.  </p>
                <p><strong>Workaround: </strong>There is no safe workaround for the rendering problem on Red Hat Fedora Core 3, so it is best to use a different Linux distribution or operating system in these locales. We have verified that this problem does not occur on Red Hat Enterprise Linux 3.</p>
            </blockquote> 
        </blockquote>
        <blockquote>
            <h3>Java Server Pages</h3>
            <!-- https://netbeans.org/bugzilla/show_bug.cgi?id=88510 --><br>
            <b><span style="color: rgb(4, 84, 145);">With Visual Web modules enabled Java Server Pages hidden in free form projects.</span></b>
            <blockquote>
                <p><strong>Description: </strong>If you downloaded and installed NetBeans Visual Web Pack 5.5 Technology Preview between October 29,2006 and November 3, 2006, you might have found that enabling Visual Web modules hides Java Server Pages in free form projects. 
                This is documented in <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=88510" target=_blank>NetBeans issue 88510</a>. 
                This problem has been fixed in downloads available after November 4, 2006.
                <p><strong>Workaround 1: </strong>Download the patch from the Visual Web Pack Update Center as follows: </p>
                <ol><li>
                        <p>From the IDE's main menu, choose Tools &gt; Update Center.</p>
                    The Update Center wizard opens. If you are working behind a firewall, you must configure the proxy server.  Click Proxy Configuration and enter your proxy information in the dialog box.</li>
                    <li>Ensure that NetBeans Visual Web Pack Update Center is selected.</li>
                    <li>Click Next in the Update Center wizard. The wizard checks for available updates and new modules, then opens the Select Modules to Install pane if there are updates or new modules available.</li>
                    <li>In the left panel, select <tt>Complib (version 1.1)</tt> and <tt>JSF Project Core (version 1.2.0.2)</tt>, then click the Add button to move them to the Include in Install panel.</li>
                    <li>  <p>Click Next, then read and accept the license agreement.</p>
                    The Update Center wizard downloads the patch.</li>
                    <li>Click Next to install the module into the IDE,  click Finish, and click OK to restart the IDE.</li>
                </ol>
                <p><b>Workaround 2: </b>Disable the NetBeans Visual Web Pack 5.5 modules as follows:</p> 
                <ol><li>From the IDE's main menu, choose Tools &gt; Module Manager.</li>
                    <li>In the Module Manager, uncheck the box in the Active column associated with <tt>Visual Web</tt>.</li>
                    <li>Once the IDE has updated the modules, click Close. </li>
                </ol><p>These modules can be re-enabled at any time using the same steps.</p>
            </blockquote>      
        </blockquote>
        </blockquote>
        </blockquote>
        <p align=center><a href="#top">top</a></p> 
        <!-- DOCUMENTATION --> 
        <a name="documentation"></a>
        <h2>Documentation</h2>
        <blockquote>
            <p>Documentation for NetBeans Visual Web Pack 5.5 is provided in the form of web-based guides and the IDE's help system. You can use the following documents to get started:</p>
            <ul>
                <li><a href="vwp-install.html">NetBeans Visual Web Pack 5.5 Installation Instructions</a></li>
                <li><a href="https://netbeans.org/kb/55/index.html">NetBeans IDE 5.5 Documentation</a></li>
            </ul>
        </blockquote>
        <p align="center"><a href="#top">top</a></p>
        <a name="more_information"></a><h2>More Information</h2>
        <blockquote>
            <p>You can also find useful information on the <a href="https://netbeans.org/" target="_blank">NetBeans Project</a> web site. Since the NetBeans IDE is an open-source project, the web site also provides access to source code, an issue database, information on creating your own NetBeans modules, and much more. </p>
            <p>For more information, visit <a href="https://netbeans.org/" target="_blank">https://netbeans.org/</a>. </p>
            <p>The NetBeans Visual Web Pack FAQ is located at <a href="http://wiki.netbeans.org/wiki/view/NetBeansVWPUserFAQ">http://wiki.netbeans.org</a>. </p>
        </blockquote>
        <p align=center><a href="#top">top</a></p>
        <hr class="light">
        <br>
        <div class="feedback-box">
            <a href="/about/contact_form.html?to=4&subject=Feedback: NetBeans Visual Web Pack 5.5 Release Notes">
        Send Us Your Feedback</a></div>
        <br style="clear:both;" /> 
    </body>
</html>
