Specifying Tomcat ports in IntelliJ IDEA to use multiple tomcat servers

Source from: http://www.altuure.com/2008/11/12/tomcat-port-configuration/

Edit the server.xml:

<Server port="${tomcat.init.port}1" shutdown="SHUTDOWN">

<Service name="Catalina">
<Connector port="${tomcat.init.port}2" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="${tomcat.init.port}3"/>
<Connector port="${tomcat.init.port}3" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"/>
<Connector port="${tomcat.init.port}4" protocol="AJP/1.3" redirectPort="${tomcat.init.port}3"/>

</Service>
</Server>

Run it like this:

CATALINA_OPTS=-Dtomcat.init.port=908
 ./startup.sh

so you will have

SHUTDOWN:9081
 HTTP:9082
 HTTPS:9083
 AJP:9084

serialVersionUIDs for IntelliJ IDEA 9

While I was wondering why IDEA did not seem to have a generator for UIDs, I browsed the plugins and found serialver.  I find it stupid enough to use and then I research more from the Code inspections.

Steps for enabling IDEA to generate serialVersionUIDs:

  1. Click the Code Inspection icon from the lower right portion of IDEA.  The one displayed like detective.
  2. Click the Configure inspections link to see the Inspections dialog box.
  3. Find the Inspections -> Serialization issues -> Serializable class without ‘serialVersionUID’.
  4. Check it to enable it.
  5. Click OK to close the Inspections dialog box.

When editing a Serializable class without a serialVersionUID, it will display a warning and a Quickfix balloon to generate it.

Part II: Running Adempiere on IntelliJ IDEA

Part II: Running Adempiere on IntelliJ IDEA

This part is a continuation of the first part which is creating projects up to compiling Adempiere in IntelliJ IDEA.  Part 1: Adempiere on IDEA here. Running Adempiere is even easier that the previous part.

In the first part, we have built the Adempiere with the IntelliJ IDEA’s own build tool.  Now, we will build Adempiere to package and prepare it for running inside an Application Server.   We will use Glassfish as an Application Server.

The build.xml

The build.xml is an Ant build script necessary for preparing, compiling and packaging Adempiere.  Adempiere guys created it for this purpose.   I am writing an upgrade to the Ant build script to use a Maven build script for Adempiere.

The default target of build.xml (found in utils_dev\build.xml) is the complete target.  The complete target creates all jar, dependencies, and everything else.  End output is the installable Adempiere zip file.

  1. Click to open the Ant Build tool window in IntelliJ IDEA
  2. Click the “+” button to add the build.xml
  3. Find the utils_dev\build.xml
  4. Click OK to add.
  5. You will see an “adempiere” in the ant build tool window
  6. Open it and double click the “complete” target to execute.

Figure 9

The result of building should be like this and no error would occur.  If there is for example a delete error, just re-run the complete target.

Figure 10

Running Adempiere Setup

  1. Inside the trunk directory, double click on Adempiere subdirectory
  2. Click RUN_Setup.bat
  3. Once done, you can now double click on the RUN_Adempiere.bat

References:

I have used http://blogs.sun.com/praneet/entry/adempiere_in_netbeans_part_2 for the layout and organization.

Part I: Adempiere in IntelliJ IDEA

Adempiere in IntelliJ IDEA

Part I: Creating Adempiere project in IntelliJ IDEA

I am an IntelliJ IDEA fanatic since its version 5.  It eases all my development efforts especially its shortcut keys in its Editor and the Code refactorings as well as Inspection tool which generally guides me to avoid things that I overlooked.  This is the part 1 and click here for the part 2: running adempiere in idea.

Pre requisites

You need to have the following running on your system no matter what OS you use:

  1. JDK 1.6 – You can download this from the Sun website. http://java.sun.com
  2. IntelliJ IDEA 9 Ultimate – You can download trial version of this from http://www.jetbrains.com
  3. Subversion Client – http://subversion.tigris.org

You need to do the following:

  1. Install IntelliJ IDEA 9, JDK 1.6 and the Subversion Client.
  2. Set JAVA_HOME environment variable to point to your JDK 1.6 installation directory.
    1. For Windows:
      1. i.      JAVA_HOME = C:\Program Files\Java\jdk1.6.0_16
      2. Set the PATH environment variable to have JAVA_HOME and Subversion installation directory exist
        1. For Windows:
          1. i.      PATH = %PATH%;%JAVA_HOME%\bin; C:\Program Files\Subversion\bin;

Getting the Adempiere Source from the Online repository (sourceforge.net)

Repository location: https://adempiere.svn.sourceforge.net/svnroot/adempiere/trunk

  1. Open the IntelliJ IDEA
  2. Once open, Click the Version Control menu and navigate to checkout from version control.
  3. Click the Subversion
    1. Click the “+” symbol and add the repository above.  It will show you figure 1 below.

Figure 1

  1. Once the repository has been loaded, right click it and click on Checkout
  2. Now, select the directory upon which you want to store the Adempiere trunk source.
    1. i.      In my case it’s in C:\workspace\adempiere\trunk

Making an IntelliJ IDEA Project

Adempiere by default does not have an IntelliJ IDEA project setting.  It does have however, a .classpath and .project which makes it an Eclipse project and nbproject which makes it a Netbeans project.

  1. In the main display of IntelliJ IDEA, Click on Create New Project
  2. Once the New project dialog appears, click the Import project from external model (because we will base it on the already defined eclipse project) as shown below Figure 2.

Figure 2

  1. Click Next and Select “Eclipse”
  2. Now, select the trunk directory and check the “Link created IntelliJ IDEA modules to Eclipse project files”.  Do not change the default which is “Create module files near .classpath files” and “.idea (directory based)” project file format.  Image shown below Figure 3.

Figure 3

  1. Click Next
  2. Check the adempiereTrunk and Click the Finish button.
  3. If the Subversion asks you about adding the newly created files to the repository, click No.

Now as an end result, there will be one project module present “adempiereTrunk”.  When you view its module settings, all sources locate each directory.  We will call it the parent project.  We will proceed with the creation of the child projects.

Making the Child projects

Make the child modules in the adempiereTrunk parent folder by doing the following steps:

  1. Right click the adempiereTrunk in the Project tool window
  2. Click the New à Module

Figure 4

  1. In the New Module dialog box, select the Import module from external model
  2. Click Next and Select Eclipse as external model
  3. Click Next
  4. Find the module you want to import
  5. Check the Link created IntelliJ IDEA modules to Eclipse project files
  6. Check also the Create module files near .classpath files

Figure 5

  1. Click Next
  2. Select the Eclipse project you want to import as module
  3. Click Finish.

In the end, your Project tool window might look like the above image in Figure 4.

Import the modules in this order to minimize errors of dependency.  Although this should not be a problem since IntelliJ will still treat correct dependency even if you imported the dependent module ahead of the depended module:

  1. lib
  2. tools
  3. serverApps
  4. JasperReportTools
  5. Base
  6. Client
  7. Data
  8. JasperReports
  9. JasperReportsWebApp
  10. Db
  11. Extend
  12. Jboss
  13. serverRoot
  14. install
  15. sqlj
  16. webStore
  17. doc
  18. looks
  19. interfaces
  20. launch
  21. migration
  22. packages
  23. posterita
  24. utils
  25. utils_dev
  26. webCM
  27. zkwebui
  28. glassfishfacet
  29. jbossfacet

Once you’ve successfully imported all projects as a module in IntelliJ IDEA, you can now click the Rebuild Project under the Build menu.   If there are errors in JasperReportsWebApp, follow instructions below.

Resolving error in JasperReportsWebApp

  1. Right click the JasperReportsWebApp
  2. Click on the Module Settings
  3. Click the Dependencies tab
  4. Click Add à Module Dependencies
  5. Find and add the “base”, then click OK
  6. Click Add à Single Entry Module Library
  7. You will be asked for the Path of the jars, enter the tools\lib folder i.e. C:\workspace\adempiere\trunk\tools\lib\
  8. Select all the jars under the folder as shown below then click OK

Figure 6

  1. Once done, you will end up like this as shown below.  Click OK button when finished.

Figure 7

Compiling Adempiere in IntelliJ IDEA

All else successful in the above configuration, we can now compile Adempiere project.

  1. Click the Build menu
  2. Click Rebuild Project

This will show a successful compilation as shown below.  No errors would be found, only warnings.

Figure 8

If you wanted to go back to Eclipse as an IDE; it should have no problems since the classpath is already linked with both IDE’s.  In Eclipse, select all and then press F5 to refresh.  Click Clean and rebuild.  It should have nil errors.

Development using IntelliJ IDEA and Maven 2

Setting up IntelliJ IDEA

  • Download IntelliJ IDEA from http://www.jetbrains.com/idea/
  • Install it
  • Run it for the first time and put your license key
  • You should enable all plugins especially the Subversion repository plugin
  • Modify the C:\Program Files\JetBrains\IntelliJ IDEA 8.1\bin\idea.exe.vmoptions to this (settings vary depending on your computer):
    -Xms256m
    -Xmx512m
    -XX:MaxPermSize=512m
    -ea

Setting up Maven 2

  • Download it from Apache Maven website: http://maven.apache.org/
  • Extract it
  • Put a MAVEN_OPTS variable environment to contain JVM options

Generating IDEA project files

There are two ways to generate IDEA project files. I recommend the IDEA based since its more efficient if at a later time the pom.xml keeps changing. Details as follows:

  1. Maven based:
    • Execute mvn idea:idea from the downloaded quicktrip-core
    • Resulting files would be core-parent.ipr which you could double-click to open
  2. IntelliJ IDEA based:
    • Run IntelliJ IDEA
    • Create a new project
    • Import the parent pom.xml – this will cause IDEA to read pom.xml and modules under it
    • Choose the desired profile
    • Add facets and spring beans when asked

Optimizing intellij idea

Choices:

– Downgrade to IntelliJ 5 or 6. 5 being the fastest but memory consuming, and 6 being the most stable and the UI interface is almost the same with 8.1.4.  I haven’t tested 4.5 and will not dwell into those early versions.

– If you are using 7 above, you might want to upgrade your hard disk to SSD (solid state devices) for their being 0ms read time at 120gb/s write time.  This is some solution that you will feed productive again.

Other suggestions from the net that I found:

– use ext3 linux file system in windows using fs-driver (http://www.fs-driver.org) and point your cache in there.

– put a -server, although this I think does not have a significant effect as I’ve tested it.

– max out your memory, -Xms256m -Xmx1024m -XX:MaxPermSize=512m

– turn off anti-virus

– turn off local history in IntelliJ

– defrag

– minimal graphic visual effect by opting to performance increase

– turn off system restore