The existing TclBlend (1.2.6) code doesn't quite work. If one tries to do a "new tcl.lang.Interp()" in the JVM before Tclblend_Init() is called, an access violation happens in Java_tcl_lang_Interp_create(): jlong JNICALL Java_tcl_lang_Interp_create( JNIEnv *env, /* Java environment. */ jobject interpObj) /* Handle to Interp object. */ { jlong lvalue; Tcl_Interp *interp; JNIEnv *oldEnv; JAVA_LOCK(); /* !!!!!!! this line triggers an access violation !!!!!! */ /* ... stuff to create the native TCL interpreter ... */ JAVA_UNLOCK(); return lvalue; } JAVA_LOCK macro tries to access the global java.NativeLock, which is not set up if Tclblend_Init is not called. I will open a bug and supply a patch to fix this initialization problem. As to using multiple native TCL interpreters in multiple Java threads, it probably requires a bit more work in the TclBlend code. The main issue seems to be with the use of a single global Notifier object. Even if one creates more than one Interp object, all Interp objects are using the same global Notifier object. That doesn't seem right. If I have more time, I may look into fixing this issue. Using multiple interpreters in my server may be beneficial. -- Jiang Wu [EMAIL PROTECTED] -----Original Message----- From: Mo DeJong [mailto:[EMAIL PROTECTED]] Sent: Thursday, March 02, 2000 3:41 PM To: [EMAIL PROTECTED] Subject: [Tcl Java] Re: [Tcl Java] Using native TCL in JVM Here is a note from the original author of Tcl Blend on this subject. Mo Dejong Red Hat Inc. Jiang Wu said: > Then there is TclBlend, which does a nice job of linking a native TCL > interpreter with JVM. But TclBlend assumes that the TCL interpreter starts > first, then it creates a JVM to run the Java code. That is the reverse of > my setup, in which the JVM starts first, then loads the TCL interpreter. TclBlend can also be used from inside a preexisting JVM. TclBlend should only create a new JVM if it can't find one already running. You can use the tcl.lang.Interp class to create a new Tcl interpreter and then evaluate scripts in it. Your sample code seemed correct without any modifications to blend. The initialization code in Tclblend_Init is only needed if you are loading the package from C initially. It mostly just creates a new Interp object to wrap the already existing C interpreter. If you are creating the initial interpreter from Java, then it doesn't need to do this. ---------------------------------------------------------------- The TclJava mailing list is sponsored by Scriptics Corporation. To subscribe: send mail to [EMAIL PROTECTED] with the word SUBSCRIBE as the subject. To unsubscribe: send mail to [EMAIL PROTECTED] with the word UNSUBSCRIBE as the subject. To send to the list, send email to '[EMAIL PROTECTED]'. An archive is available at http://www.mail-archive.com/tcljava@scriptics.com