Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Update paths

 This page describes the process for building the Windows Native Connector isapi_redirect.dll (mod_jk) for Windows. This is the native part of the APR/Native connector.    

The instructions on this page reference specific versions of numerous tools and dependencies. The versions referenced on this page are known to work. Other versions may work. Where information is available on the suitability (or otherwise) of alternative versions it is provided. All installations use default settings unless explicitly noted otherwise. Non-default settings in italics are provided for completeness but are believed not to impact on the success of the build process. Non-default settings in standard type may, or may not, impact the success of the build process.    

Hardware

 Known working configurations include:  

  1. VMware virtual machine  
    • 60GB HDD  

    • 2 processors  

    • 2GB RAM  

    • No USB  

    • No sound  

    • Bridged networking  

  2. Others TBD    

Operating System

Known working configurations include:  

  1. Windows 7  
    • Static IP address  

    • 1600x1200 screen resolution  

    • UTC timezone  

    • Install VMware Tools  
    • Apply all updates  

  2. Others TBD    

Build tools

  1. Git for windows (http://git-scm.com/) 1.9.4-20140611 
  2. Mladen's Custom Microsoft Compiler Toolkit Compilation  
    • https://github.com/mturk/cmsc (cb6be932c8c95a46262a64a89e68aae620dfdcee)  

    • Windows SDK  
      • no documentation  
      • No samples  
      • Complete set of developer tools  
    • Windows DDK  
      • Build environments  
      • Tools  
    • Compile as per <cmsc-root>/tools/README.txt  

    • Install Perl as per <cmsc-root>/tools/README.txt  

  3. TortoiseSVN (http://tortoisesvn.net/) 1.8.7 64-bit  

  4. 7-Zip 9.20 64-bit  
  5. JDK 1.7.0_71 64-bit   

Building

plug-in for IIS that provides broadly the same functionality as mod_jk does for httpd.

These instructions assume that you have configured the common build environment.  

Building

The isapi_redirector.dll requires no other external dependencies (it does depend on PCRE but this is included in the source)While tcnative itself needs to be built last, we unpack it first because there are some patches in the tcnative source distribution that will need to be applied to both APR and OpenSSL. Obtain the tcnative source from one of:

E.g.: To build the latest 1.2.x development build from trunk

Obtain the source code:

 c:
 cd \
 svngit coclone https://svngithub.apache.org/repos/asf/tomcat/native/trunk/com/apache/tomcat-connectors tomcat-nativejk-1.2.x
 cd tomcat-nativejk-1.2.x\native\srclib\apriis

 

Unpack APR 1.5.2 source distribution in this directory (C:\tomcat-native-1.2.x\native\srclib\apr).    

Apply the apr-enable-ipv6.patch. Note that the patch will apply but depending on exactly which revision you are working with an offset may be required of ~6 lines.    


Build  isapi_redirector.dll:

 c:\cmsc\setenv.bat /x86  
nmake -f NMAKEmakefile BUILD_CPU=x86 APR_DECLARE_STATIC=1Makefile.vc    c c:\cmsc\setenv.bat /x64  nmake nmake -f NMAKEmakefile BUILD_CPU=x64 APR_DECLARE_STATIC=1    cd ..\openssl

...

Makefile.vc


Tomcat isapi_redirect DLLs may then be found in C:\tomcat-

...

jk-1.2.x\native\

...

Apply openssl-msvcrt.patch    

 c:\cmsc\setenv.bat /x86
 perl Configure VC-WIN32
 ms\do_nasm
 nmake -f ms\nt.mak
 move out32 out32-x86
 
 c:\cmsc\setenv.bat /x64
 perl Configure VC-WIN64A
 ms\do_win64a
 nmake -f ms\nt.mak clean
 nmake -f ms\nt.mak
 move out32 out32-x64

 

Keeping the various libraries in versioned directories saves having to rebuild them next time if the version remains unchanged.    

 cd ..
 set OPENSSL_VER=1.0.2g
set APR_VER=1.5.2
 
 mkdir \deps-x86\apr-%APR_VER%\include
 mkdir \deps-x86\apr-%APR_VER%\lib
 mkdir \deps-x86\openssl-%OPENSSL_VER%\include
 mkdir \deps-x86\openssl-%OPENSSL_VER%\lib
 xcopy /E \deps-x86 \deps-x64\
 
   
 xcopy /E apr\include \deps-x86\apr-%APR_VER%\include\
 xcopy /E apr\include \deps-x64\apr-%APR_VER%\include\
 
 copy apr\WINXP_X86_LIB_RELEASE\apr-1.lib \deps-x86\apr-%APR_VER%\lib
 copy apr\WINXP_X64_LIB_RELEASE\apr-1.lib \deps-x64\apr-%APR_VER%\lib
 
 xcopy /E openssl\inc32 \deps-x86\openssl-%OPENSSL_VER%\include\
 xcopy /E openssl\inc32 \deps-x64\openssl-%OPENSSL_VER%\include\
 
 copy openssl\out32-x86\*.lib \deps-x86\openssl-%OPENSSL_VER%\lib\
 copy openssl\out32-x64\*.lib \deps-x64\openssl-%OPENSSL_VER%\lib\
 
 copy openssl\out32-x86\openssl.exe \deps-x86\openssl-%OPENSSL_VER%\
 copy openssl\out32-x64\openssl.exe \deps-x64\openssl-%OPENSSL_VER%\
 
 cd ..
 SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_71
 
 c:\cmsc\setenv.bat /x86
 nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-%APR_VER% WITH_OPENSSL=C:\deps-x86\openssl-%OPENSSL_VER% APR_DECLARE_STATIC=1 ENABLE_OCSP=1
 move WINXP_X86_DLL_RELEASE WINXP_X86_OCSP_DLL_RELEASE
 nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-%APR_VER% WITH_OPENSSL=C:\deps-x86\openssl-%OPENSSL_VER% APR_DECLARE_STATIC=1
 
 c:\cmsc\setenv.bat /x64
 nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-%APR_VER% WITH_OPENSSL=C:\deps-x64\openssl-%OPENSSL_VER% APR_DECLARE_STATIC=1 ENABLE_OCSP=1
 move WINXP_X64_DLL_RELEASE WINXP_X64_OCSP_DLL_RELEASE
 nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-%APR_VER% WITH_OPENSSL=C:\deps-x64\openssl-%OPENSSL_VER% APR_DECLARE_STATIC=1

 

Tomcat Native Connector DLLs may then be found in C:\tomcat-native-1.2.x\native\WINXP_*_[OCSP_]DLL_RELEASE    

Construct the binary distributions    

...

iis\[x86|x64]_RELEASE

Construct the binary distributions    

 set VER=1.2.43
 mkdir tomcat-connectors-%VER%-windows-i386-iis
 copy ..\..\LICENSE tomcat-connectors-%VER%-windows-i386-iis\
 copy ..\..\NOTICE tomcat-connectors-%VER%-windows-i386-iis\
 copy README tomcat-connectors-%VER%-windows-i386-iis\
copy x86_RELEASE\isapi_redirect.dll tomcat-connectors-%VER%-windows-i386-iis\
 mkdir tomcat-connectors-%VER%-windows-x86_64-iis
 
copy ..\..\LICENSE tomcat-connectors-%VER%-windows-x86_64-iis\  copy ..\..\NOTICE tomcat-connectors-%VER%-windows-x86_64-iis\  copy README tomcat-connectors-%VER%-windows-x86_64-iis\
copy x64_RELEASE\isapi_redirect.dll tomcat-connectors-%VER%-windows-x86_64-iis\
 mkdir tomcat-connectors-%VER%-windows-i386-symbols
 copy ..\..\LICENSE tomcat-connectors-%VER%-windows-i386-symbols
copy ..\..\NOTICE tomcat-connectors-%VER%-windows-i386-symbols
copy x86_RELEASE\isapi_redirect.pdb tomcat-connectors-%VER%-windows-i386-symbols\
 mkdir tomcat-connectors-%VER%-windows-x86_64-symbols
 copy ..\..\LICENSE tomcat-connectors-%VER%-windows-x86_64-symbols
copy ..\..\NOTICE tomcat-connectors-%VER%-windows-x86_64-symbols
copy x64_RELEASE\isapi_redirect.pdb tomcat-connectors-%VER%-windows-x86_64-symbols\
 SET JAVA_HOME=C:\Java\adopt-8.0.242.09-x64
 set PATH=%PATH%;%JAVA_HOME%\bin
 cd tomcat-connectors-%VER%-windows-i386-iis
 jar -cMf ..\tomcat-connectors-%VER%-windows-i386-iis.zip *
 cd ..\tomcat-connectors-%VER%-windows-x86_64-iis
 jar -cMf ..\tomcat-connectors-%VER%-windows-x86_64-iis.zip *
 cd ..\tomcat-connectors-%VER%-windows-i386-symbols
 jar -cMf ..\tomcat-

...

connectors-%VER%-

...

windows-i386-

...

symbols.zip *

...


cd ..\tomcat-

...

connectors-%VER%-

...

windows-

...

x86_64-symbols
jar -cMf ..\tomcat-

...

connectors-%VER%-

...

windows-

...

x86_64-

...

symbols.zip *

 


The Windows binary distributions may then be found in C:\tomcat-nativejk-1.2.x\native\    iis

These need to be signed and hashed before uploading for the release vote.    

Beware of typos in the name and contents of hash files for OCSP binaries ("ocsp" vs "oscp"). Such typos happened.    

A correct example:    

tomcat-native-1.1.32-ocsp-win32-bin.zip.md5   

  0b0e1e4c77b9b7051fc2c751b70d2880 *tomcat-native-1.1.32-ocsp-win32-bin.zip

tomcat-native-1.1.32-ocsp-win32-bin.zip.sha1    

...