Wednesday, February 13, 2013

How To Change The Default Port Of Tomcat

1) Go to 'conf' folder in tomcat installation directory.

2)  Edit following tag in 'server.xml' file.

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" 
redirectPort="8443"/>

3) Change the port=8080 value to a preferred value.A port number is a 16-bit unsigned integer, thus ranging from 1 to 65535. The port numbers in the range from 0 to 1023 are the well-known ports. They are used by system processes that provide widely used types of network services.

4) Save file.



How To Host A Simple Html Page in Tomcat

There is no need to create a war to run the html file from Tomcat. Follow steps can be used.
  1. Create a folder in webapps folder e.g. MyApp
  2. Put html and css in that folder and name the html file, which you want to be the starting page for your application, index.html
  3. Start tomcat and point your browser to url "http://localhost:8080/MyApp". Your index.html page will pop up in the browser
There is another way too.Put the html or other resources to ${CATALINA_HOME}/webapps/ROOT
& open browser and browse to http://localhost:8080/yourhtml.html
 

Monday, December 3, 2012

Writing Ant Targets

1) Clean

<target name="clean" description="Clean this project">
        <echo message="############################################################" />
        <echo message="#                  Cleaning this project                   #" />
        <echo message="############################################################" />

        <delete dir="${proj.webapp.dir}/WEB-INF/classes" failonerror="false" />
        <delete dir="${proj.webapp.dir}/${proj.gwt.js.dir}" failonerror="false" />
        <delete dir="${proj.webapp.dir}/pages/jasper/out" failonerror="false" />
        <delete dir="${proj.dist.dir}" failonerror="false" />
    </target>

when executing it does follows,

clean:
     [echo] ############################################################
     [echo] #                  Cleaning this project                   #
     [echo] ############################################################
   [delete] Deleting directory /home/ishara/Development/Projects/OfficeProjects/Rates3/Rates3Nov28/rates3/war/WEB-INF/classes


It cleans the war/WEB-INF/classes in the src of project chekout folder.

2) javac

<target name="javac" description="Compile java source">
        <mkdir dir="${proj.webapp.dir}/WEB-INF/classes" />

        <javac srcdir="${proj.java.dir}" destdir="${proj.webapp.dir}/WEB-INF/classes" includes="**"
               debug="${proj.compile.debug}" optimize="true" deprecation="false" encoding="utf-8">
            <classpath refid="project.class.path" />
        </javac>
        <copy todir="${proj.webapp.dir}/WEB-INF/classes">
            <fileset dir="${proj.java.dir}" />
        </copy>
    </target>

above does the following.

javac:
    [mkdir] Created dir: /home/ishara/Development/Projects/OfficeProjects/Rates3/Rates3Nov28/rates3/war/WEB-INF/classes
    [javac] Compiling 460 source files to /home/ishara/Development/Projects/OfficeProjects/Rates3/Rates3Nov28/rates3/war/WEB-INF/classes
    [javac] Note: Some input files use or override a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.
     [copy] Copying 519 files to /home/ishara/Development/Projects/OfficeProjects/Rates3/Rates3Nov28/rates3/war/WEB-INF/classes


It creates a directory under /war/WEB-INF/classes of project folder.
Then it compiles /war/WEB-INF/classes and copy those files to /war/WEB-INF/classes newly created folder.

3) war

<target name="war" description="Packaging this project">
        <echo message="############################################################" />
        <echo message="#                 Packaging this project                   #" />
        <echo message="############################################################" />

        <mkdir dir="${proj.dist.dir}/${proj.webapp.name}" />

        <copy todir="${proj.dist.dir}/${proj.webapp.name}">
            <fileset dir="${proj.webapp.dir}" excludes="**/*.java" />
        </copy>

        <!--jar jarfile="${dist.dir}/${webapp.name}.war" index="true">
            <fileset dir="${dist.dir}/${webapp.name}" />
        </jar-->
    </target>


It executees as follows.

war:
     [echo] ############################################################
     [echo] #                 Packaging this project                   #
     [echo] ############################################################
    [mkdir] Created dir: /home/ishara/Development/Projects/OfficeProjects/Rates3/Rates3Nov28/rates3/dist/irates
     [copy] Copying 2525 files to /home/ishara/Development/Projects/OfficeProjects/Rates3/Rates3Nov28/rates3/dist/irates
     [copy] Copied 298 empty directories to 2 empty directories under /home/ishara/Development/Projects/OfficeProjects/Rates3/Rates3Nov28/rates3/dist/irates

It creates a direcotry under rates3 src fodler as /dist/irates.
Then copy fiels to that folder, and copy the folders as well.

 4) deploy

<target name="deploy-web-node1" description="Deploys on Web Node 1">
        <macro-deploy name="web node 1" node="${proj.server.web.node1}"/> </target>

It executes as follows.

deploy-web-node1:
     [echo] ##############################################################
     [echo] #                    Deploys on web node 1             #
     [echo] ##############################################################
   [delete] Deleting directory /home/ishara/Development/Tomcat/apache-tomcat-6.0.35/conf/Catalina
     [copy] Copying 2525 files to /home/ishara/Development/Tomcat/apache-tomcat-6.0.35/webapps/irates
     [copy] Copied 299 empty directories to 2 empty directories under /home/ishara/Development/Tomcat/apache-tomcat-6.0.35/webapps/irates


It deletes the/ apache-tomcat-6.0.35/conf/Catalina directory.
Then copy files to /apache-tomcat-6.0.35/webapps/irates and copy the folder to that directory as well.

Below is the complete ant build file used for Rates project and a full deploy following will have to be executed.

ant clean compile war deploy-web-node1

but if we do not have client side changes, then without using gwtc below is enough.

ant clean javac apply-env war deploy-web-node1

Build file is as below.

<?xml version="1.0" encoding="utf-8" ?>
<project name="Rates" default="compile" basedir=".">

    <import file="properties.xml" />

    <path id="project.class.path">
        <pathelement location="${proj.webapp.dir}/WEB-INF/classes" />
        <fileset dir="${proj.ext-lib.dir}" includes="*.jar" />
        <fileset dir="${proj.webapp.dir}/WEB-INF/lib" includes="*.jar" />
    </path>

    <target name="clean" description="Clean this project">
        <echo message="############################################################" />
        <echo message="#                  Cleaning this project                   #" />
        <echo message="############################################################" />

        <delete dir="${proj.webapp.dir}/WEB-INF/classes" failonerror="false" />
        <delete dir="${proj.webapp.dir}/${proj.gwt.js.dir}" failonerror="false" />
        <delete dir="${proj.webapp.dir}/pages/jasper/out" failonerror="false" />
        <delete dir="${proj.dist.dir}" failonerror="false" />
    </target>

    <target name="javac" description="Compile java source">
        <mkdir dir="${proj.webapp.dir}/WEB-INF/classes" />

        <javac srcdir="${proj.java.dir}" destdir="${proj.webapp.dir}/WEB-INF/classes" includes="**"
               debug="${proj.compile.debug}" optimize="true" deprecation="false" encoding="utf-8">
            <classpath refid="project.class.path" />
        </javac>
        <copy todir="${proj.webapp.dir}/WEB-INF/classes">
            <fileset dir="${proj.java.dir}" />
        </copy>
    </target>

    <target name="apply-env" description="Apply env properties into build process" if="proj.env">
        <echo message="############################################################" />
        <echo message="#           Applying ENV ${proj.env} propertis             #" />
        <echo message="############################################################" />

        <copy file="${proj.res.dir}/env/${proj.env}/system.properties"
              tofile="${proj.webapp.dir}/WEB-INF/classes/system.properties"
              overwrite="true" failonerror="true" />

        <copy file="${proj.res.dir}/env/${proj.env}/context.xml"
              tofile="${proj.webapp.dir}/META-INF/context.xml"
              overwrite="true" failonerror="true" />

        <copy file="${proj.res.dir}/env/${proj.env}/Rates.gwt.xml"
              tofile="${proj.webapp.dir}/WEB-INF/classes/shipxpress/rates3/Rates.gwt.xml"
              overwrite="true" failonerror="true" />
    </target>

    <target name="gwtc" description="GWT compile to JavaScript">
        <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
            <classpath>
                <path refid="project.class.path" />
            </classpath>
            <jvmarg value="${proj.runtime.initmemory}" />
            <jvmarg value="${proj.runtime.maxmemory}" />
            <jvmarg value="${proj.runtime.permgensize}" />
            <arg value="${proj.gwt.module}" />
        </java>
    </target>

    <target name="jasperc" description="Jasper compile">
        <echo message="#################Compiling the Jasper Report from jrxml#################" />

        <mkdir dir="${proj.webapp.dir}/pages/jasper/out" />

        <taskdef name="jrc" classname="net.sf.jasperreports.ant.JRAntCompileTask">
            <classpath>
                <fileset dir="${proj.ext-lib.dir}" includes="*.jar" />
                <fileset dir="${proj.webapp.dir}/WEB-INF/lib" includes="*.jar" />
            </classpath>
        </taskdef>

        <jrc srcdir="${proj.webapp.dir}/pages/jasper" destdir="${proj.webapp.dir}/pages/jasper/out" includes="*.jrxml" />

    </target>

    <target name="compile" depends="javac,apply-env,gwtc,jasperc" description="Compiling this project">
        <echo message="############################################################" />
        <echo message="#                 Compiling this project                   #" />
        <echo message="############################################################" />

    </target>

    <target name="war" description="Packaging this project">
        <echo message="############################################################" />
        <echo message="#                 Packaging this project                   #" />
        <echo message="############################################################" />

        <mkdir dir="${proj.dist.dir}/${proj.webapp.name}" />

        <copy todir="${proj.dist.dir}/${proj.webapp.name}">
            <fileset dir="${proj.webapp.dir}" excludes="**/*.java" />
        </copy>

        <!--jar jarfile="${dist.dir}/${webapp.name}.war" index="true">
            <fileset dir="${dist.dir}/${webapp.name}" />
        </jar-->
    </target>

    <target name="gwt-debug-mode" description="Run GWT debug mode">
        <java failonerror="true" fork="true" classname="com.google.gwt.dev.DevMode">
            <classpath>
                <fileset dir="${proj.gwt.debug.sdk}" includes="*.jar" />
                <path refid="project.class.path" />
            </classpath>
            <jvmarg value="${proj.runtime.initmemory}" />
            <jvmarg value="${proj.runtime.maxmemory}" />
            <jvmarg value="${proj.runtime.permgensize}" />
            <jvmarg value="-Xdebug" />
            <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${proj.gwt.debug.client.debug.port}" />
            <arg value="-noserver" />
            <arg value="-port" />
            <arg value="${proj.gwt.debug.server.http.port}" />
            <arg value="-startupUrl" />
            <arg value="/${proj.webapp.name}" />
            <arg value="${proj.gwt.module}" />
        </java>
    </target>

    <macrodef name="macro-deploy">
        <attribute name="node" default="${proj.server.web.node1}"/>
        <attribute name="name" default=""/>
        <sequential>
            <echo message="##############################################################"/>
            <echo message="#                    Deploys on @{name}             #"/>
            <echo message="##############################################################"/>

            <delete includeemptydirs="true" casesensitive="false">
                <fileset dir="@{node}/work" includes="**/*"/>
            </delete>
            <delete includeemptydirs="true" casesensitive="false">
                <fileset dir="@{node}/temp" includes="**/*"/>
            </delete>
            <delete dir="@{node}/conf/Catalina"/>
            <delete dir="@{node}/webapps/${proj.webapp.name}"/>

            <copy todir="@{node}/webapps/${proj.webapp.name}" overwrite="true">
                <fileset dir="${proj.dist.dir}/${proj.webapp.name}"/>
            </copy>
        </sequential>
    </macrodef>

    <target name="deploy-web-node1" description="Deploys on Web Node 1">
        <macro-deploy name="web node 1" node="${proj.server.web.node1}"/>
    </target>

    <target name="deploy-web-node2" description="Deploys on Web Node 2">
        <macro-deploy name="web node 2" node="${proj.server.web.node2}"/>
    </target>

    <target name="deploy-job-node" description="Deploys on Job Node">
        <macro-deploy name="web node 1" node="${proj.server.job.node}"/>
    </target>

    <target name="checkstyle" description="Static code analysing is performed" >
        <taskdef resource="checkstyletask.properties" classpath="${checkstyle.home}/checkstyle-5.3-all.jar"/>
        <checkstyle config="${proj.res.dir}/checkstyle/shipx_check_style.xml" failOnViolation="false">
            <fileset dir="${proj.java.dir}/" includes="**/*.java"/>
            <formatter type="plain"/>
            <formatter type="xml" tofile="reports/checkstyle-report.xml"/>
           </checkstyle>
        <xslt in="reports/checkstyle-report.xml" style="${checkstyle.home}/contrib/checkstyle-noframes.xsl"
            out="reports/checkstyle-report.html"/>
    </target>
   
    <target name="all" depends="checkstyle, compile, war, deploy-web-node1" description="All taks">
        <echo message="############################################################" />
        <echo message="#                 Building the Project                   #" />
        <echo message="############################################################" />
    </target>

    <target name="all-with-clean" depends="clean, all" description="All taks with clean">
        <echo message="############################################################" />
        <echo message="#                 Cleaning and Building the Project                   #" />
        <echo message="############################################################" />
    </target>
   
</project>

Wednesday, October 24, 2012

Sending Parameters in a GET request

Below is how you can execute an action without clicking button.
Once you are logged in to the app, execute the url as below.

http://localhost:8080/irates/authorityRateSupport!addAuthorityRate.action?flag1=MY VAL


If you have more values to be sent to server side as parameters, then append as below and hit enter, action will take place.

http://localhost:8080/irates/authorityRateSupport!addAuthorityRate.action?flag1=MY VAL&flag2=MY VAL1