<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
    <head>  
        <title>Deployment and Monitoring</title>
        <meta http-equiv="content-language" content="en">
        <meta name="description" content="DESCRIPTION HERE">
        <link rel="stylesheet" type="text/css" href="../../features.css">
        <link rel="stylesheet" type="text/css" href="/images_www/js/colorbox/colorbox.css">
    </head>
    <body>
        <script type="text/javascript" src="/images_www/js/colorbox/jquery.colorbox-min.js"></script>

        <script type="text/javascript">
            $(document).ready(function(){
                $('a.cbox').colorbox({rel:'cbox',opacity:0.7});
            });
        </script>
        <div style="margin:10px 20px 0px 0px;">
            <h1>Application Deployment and Monitoring</h1>
            <p> <a href="../../images_www/v7/3/features/deploy-monitor.png"><img
                        alt="Java Enterprise application development in the NetBeans IDE"
                        src="../../images_www/v7/3/features/deploy-monitor-cut.png"
                        style="border: 0px solid ; width: 650px; height: 250px;"><br>
                    <span class="font-11">Click image for fullscreen preview</span></a>
            </p>            
            <p class="intro">
                NetBeans IDE supports multiple deployment platforms with out of the box support
                for the latest version of Glassfish. Post deployment, you can leverage the support for
                monitoring, profiling and testing your applications.
            </p>
            <div class="line">&nbsp;</div>

            <!-- left text section start -->
            <a name="o1"></a>
            <span id="im1" class="overview-right"><a href="../../images_www/v7/3/features/deploy-servers.png" class="cbox" title="Support for Multiple Application Servers"><img src="../../images_www/v7/3/features/deploy-servers-cut.png" width="320" height="235" alt=""  /></a></span>
            <h2>Deployment on Servers</h2>
            <p>
                The IDE works with any standard Java Enterprise Edition (Java EE) container, 
                and provides support for GlassFish Server Open Source Edition 3.1.2.2, WebLogic 12c 
                and 11g, Apache Tomcat 7.0 and 6.0, JBoss 6.1, and others.<br/>
            </p>
            <p><b>Deploy on Save</b></p>
            <p>
                The IDE instantly redeploys any running Java EE application when a change is 
                made to the project. Deploy on Save is available for web, EJB and EAR 
                applications, and supported for GlassFish 3.x, WebLogic and Tomcat.
            </p>
            <p>
                Also available, is the <a href="http://plugins.netbeans.org/plugin/22254/jrebel-netbeans-plugin">
                JRebel plugin</a> that enables you to use JRebel to see 
                changes you make to the code without the need to redeploy.
            </p>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->

            <!-- right text section start -->
            <a name="o4"></a>
            <span class="overview-left" id="im2"><a href="../../images_www/v7/3/features/http-monitor.png" class="cbox" title="Monitor Web Applications"><img src="../../images_www/v7/3/features/http-monitor-cut.png" width="320" alt="" /></a></span>
            <h2>HTTP Monitoring</h2>
            <p>
                In addition to the <a href="../java/debugger.html">debugging and profiling support</a>, the IDE provides 
                the HTTP Server-Side Monitor to help diagnose problems 
                with data flow from JSP page and servlet execution on the web server. 
                The HTTP Server-Side Monitor gathers data about HTTP requests that are 
                processed by the servlet engine. For each HTTP request that is processed, 
                the monitor records data about the incoming request and the data states 
                maintained on the server. You can view data, store data for future 
                sessions, and replay and edit previous requests.
            </p>
            <div class="line">&nbsp;</div>
            <!-- right text section end -->

            <!-- left text section start -->
            <a name="o1"></a>
            <span id="im3" class="overview-right"><a href="../../images_www/v7/3/features/javaee-testing-maven.png" class="cbox" title="Java EE Testing Support"><img src="../../images_www/v7/3/features/javaee-testing-maven-cut.png" width="320" height="235" alt=""  /></a></span>
            <h2>Java EE Applications Testing</h2>
            <p>
                In conjunction with Maven, NetBeans IDE allows you to very quickly test
                an enterprise application. You can create test classes for your enterprise application 
                with a wizard and then run the test in the IDE. The test class will create an instance of 
                the GlassFish embedded EJB container to test the connection to the backend.<br/><br/>
                <a href="../../kb/docs/javaee/maven-entapp-testing.html" class="arr-link">Testing a Maven based Java EE Application</a>
            </p>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->

            <table>
                <tr>
                    <td class="valign-top"><h2>View a JSP File's Servlet</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>Save and Replay</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>Deployment Configuration</h2></td>
                </tr>
                <tr>
                    <td class="valign-top" style="width:33%;padding-right:10px;"> 

                        <p>                             
                            <span class="overview-centre" id="im4"><img src="../../images_www/v7/3/features/open-servlet-cut.png" width="200" alt="" /></span><br/>
                            When you execute a JSP file, you can view the translated 
                            servlet source in the Source Editor
                            which can help debug issues in the JSP file.
                        </p>
                    </td>
                    <!--<td>&nbsp;</td>-->
                    <td class="valign-top"  style="width:33%;padding-right:10px;">

                        <p>
                            <span class="overview-centre" id="im5"><img src="../../images_www/v7/3/features/http-replay-cut.png" width="200" alt="" /></span><br/>
                            In the HTTP Server Monitor, you can save and replay HTTP requests. 
                            When you replay a request, the response appears in the web browser. 
                            You can also edit a request to help debug issues corresponding to 
                            various scenarios for the request.
                        </p>
                    </td>
                    <!--<td>&nbsp;&nbsp;&nbsp;</td>-->
                    <td class="valign-top"  style="width:33%">

                        <p>
                            <span class="overview-centre" id="im6"><img src="../../images_www/v7/3/features/webapp-configuration-cut.png" width="200" alt="" /></span><br/>
                            The IDE automatically updates your deployment descriptors as you 
                            code your web application. You can manually configure your deployment 
                            descriptors editing the descriptor files with a document view of 
                            the associated XML.
                            <br/><br/>

                        </p>
                    </td>
                </tr>
            </table>
            <h2>See Also</h2>
            <ul class="bigger">
                <li><a href="/community/releases/81/index.html">NetBeans IDE 8.1 Release Page</a> for a list of highlighted features in the latest stable release.</li>                
                <li><a href="../../kb/trails/java-ee.html">Java EE and Java Web Learning Trail</a> for tutorials that will help you get started.</li> 
            </ul>

        </div>
    </body>
</html>
