1. Create the tclIndex file using auto_mkindex.
auto_mkindex C:/yourdirectory/proclib
2. jar up the directory.
jar -cvf proclib.jar C:/yourdirectory/proclib
3. Set the classpath and call jacl.
Eg send an email with javamail.tcl using java mail class libraries
Top level bat file.
********************
setlocal
set tclScript= C:\yourdirectory\sendJavaMail.tcl
set javaCmd="C:\yourdirectory\Java\j2re1.4.2_05\bin\java"
:: ### jacl jars ###.
set CLASSPATH=%CLASSPATH%;C:/downloads/TCL/jacl/tcljava.jar
set CLASSPATH=%CLASSPATH%;C:/downloads/TCL/jacl/jacl.jar
:: ### proclib jar holds scripts ###.
set CLASSPATH=%CLASSPATH%;C:/home/patrick/eclipse/WASAdminSBV/WSAdmin/
WAS5.1/JACL/proclib.jar
:: ### java mail jars ###.
set CLASSPATH=%CLASSPATH%;C:/downloads/java/javamail-1_4/javamail-1.4/
lib/smtp.jar
set CLASSPATH=%CLASSPATH%;C:/downloads/java/javamail-1_4/javamail-1.4/
lib/mailapi.jar
set CLASSPATH=%CLASSPATH%;C:/downloads/java/activation.jar
%javaCmd% -classpath %CLASSPATH% tcl.lang.Shell %tclScript%
endlocal
Called tcl script.
*******************
#=============================================================
#
# send mail using java mail library.
package require java
# use the resource feature to load the jar file directory system
lappend auto_path resource:/proclib
puts "auto_path is [ set auto_path ]"
# putsLog proc
putsLog "test message"
# javaMail namespace.
javaMail::javaMail your...@yoursite.com "test email" " body text"
==============================================================
Both the putslog proc and javaMail::javaMail namespace in proclib.jar
are dynamically loaded.
For those of you who are interested the javamail proc looks like
this: Tcl's mail package is not supported under jacl.
namespace eval javaMail {
proc javaMail { emailAddress subject body } {
java::import java.util.Properties
java::import javax.mail.Message
java::import javax.mail.Session
java::import javax.mail.Transport
java::import javax.mail.internet.InternetAddress
java::import javax.mail.internet.MimeMessage
set PropertiesI [ java::new Properties ]
set emailServer youremailserver.com
$PropertiesI put "mail.smtp.host" $emailServer
set SessionI [ java::call Session getDefaultInstance $PropertiesI
[ java::null ] ]
#$SessionI setDebug true
set MessageI [ java::new MimeMessage $SessionI ]
set InternetAddressFromI [ java::new InternetAddress [ info
host ] ]
set InternetAddressToI [ java::new InternetAddress
$emailAddress ]
$MessageI setRecipient [ java::field Message.RecipientType TO ]
$InternetAddressToI
$MessageI setSubject $subject
if { [ file isfile $body ] ==1 } {
set body [ read [ open $body r ] ]
} else {
set tx "body is text"
}
$MessageI setContent $body "text/plain"
java::call Transport send $MessageI
}
}