[mod_python] Problem in executing java program using mod_python.

David Fraser davidf at sjsoft.com
Wed Aug 17 11:07:44 EDT 2005


Hi Conrad

Thanks for the pointer, I'll have a look... Unfortunately I can't use 
GPL code for this particular application but it certainly looks like a 
great project
Actually the architecture is fairly similar to PyLucene, since it 
doesn't use a Java interpreter but rather compiles the Java code using 
gcj and then wraps that using SWIG - basically equivalent to compiling 
C++ code and wrapping that with SWIG.

Cheers
David

Conrad Steenberg wrote:

>Hi David
>
>You might also want to check out Xapian at http://www.xapian.org
>"""
>Xapian is an Open Source Probabilistic Information Retrieval library,
>released under the GPL. It's written in C++, with bindings to allow use
>from other languages (Perl, Python, PHP, Java, and TCL are currently
>supported; Guile and C# are being worked on).
>"""
>
>Calling Java code from Python just seems rather offensive to the
>minimalist beauty I associate with Python ;-)
>
>Cheers
>
>Conrad
>
>On Tue, 2005-08-16 at 14:39 +0200, David Fraser wrote:
>  
>
>>We use PyLucene too and its fantastic, but just be aware that if you run 
>>Apache in multi-threaded mode (e.g. under Windows) there are conflicts 
>>with the gcj threading (for which there are also workarounds, mainly 
>>running a separate process for PyLucene)
>>
>>Julien wrote:
>>
>>    
>>
>>>Why not using PyLucene ? http://pylucene.osafoundation.org/
>>>
>>>It's a SWIG python port of Java Lucene, and it works perfeclty with
>>>mod_python (we use it every day here at work)
>>>
>>>On Tue, 2005-08-16 at 15:53 +0530, Manjeet Chaudhary wrote:
>>> 
>>>
>>>      
>>>
>>>>Hello All
>>>>
>>>>I am using mod_python and Lucene for searching of Arabic Text from an 
>>>>Index created using Lucene+Java.
>>>>I am facing some problems in running "java" command using mod_python.
>>>>
>>>>1.   I am trying to run java program using "os.system" command.
>>>>   Check = os.system("java ..........")
>>>>
>>>>2.   The command returns me a value of 256.
>>>>   i.e Check = 256
>>>>
>>>>3.   I am not able to figure it out why that java program is not being 
>>>>executed properly.
>>>>
>>>>4.   For the java program i have set the classpath and compiling and 
>>>>running that program using the classpath.
>>>>
>>>>   export CLASSPATH = 
>>>>/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/lucene-1.4.3.jar 
>>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/PDFBox-0.6.7a.jar 
>>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/log4j-1.2.8.jar 
>>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/tm-extractors-0.4.jar 
>>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/ArabicAnalyzer-1.0b.jar 
>>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/commons-collections-3.1.jar
>>>>
>>>>   javac -classpath $CLASSPATH:. SearchFiles.java
>>>>
>>>>   java -classpath $ClASSPATH:. SearchFiles
>>>>
>>>>5.   SearchFiles program is running properly if i run it from shell.
>>>>
>>>>So please help me and tell where i am going wrong.
>>>>I have attached the copy of code at the end .
>>>>
>>>>Thank you
>>>>Manjeet Chaudhary
>>>>
>>>>
>>>>
>>>>#!/usr/bin/env python
>>>>"""
>>>>#-------------------------------------------------------------------------------------------------------
>>>>#Name:       ar_search.py
>>>>#Version:    1.0
>>>>#Purpose:    Searching for Infoviewer
>>>>#Author:     Alok Khandelwal
>>>>#Created:    10-08-2005
>>>>#Licence:    Infogrid Pacific EULA
>>>>#--------------------------------------------------------------------------------------------------------
>>>>#Revision History
>>>>#--------------------------------------------------------------------------------------------------------
>>>>
>>>>#----------------Different modules required are imported 
>>>>here-------------------
>>>>"""
>>>>import cgitb,cgi,sys
>>>>cgitb.enable()
>>>>import os
>>>>        
>>>>
>>>>from os.path import join, abspath
>>>>from mod_python import apache,util,Session
>>>      
>>>
>>>>"""
>>>>#----------------End of importing 
>>>>modules----------------------------------------
>>>>
>>>>
>>>>def search(req):
>>>>
>>>>   """This part takes Arabic keyword from req variable and write that 
>>>>keyword into a temp file. This temp file will be opened by java program 
>>>>and that program will take that value and search for the variable in the 
>>>>index file.
>>>>Java program will store the result in results.txt file"""
>>>>
>>>>   The_Form = util.FieldStorage(req)
>>>>   for name in The_Form.keys():
>>>>       #--------Checking for the selected Fields and turning those flag 
>>>>on--------
>>>>       if name == 'search_contents':
>>>>           value=The_Form[name]
>>>>           value.encode('utf-8')
>>>>           f=open("/home/ajinkyan/cgi-bin/infoviewer/temp.txt","w")
>>>>           f.write(value)
>>>>           f.close()
>>>>
>>>>           try:
>>>>               command = "export 
>>>>CLASSPATH=/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/lucene-1.4.3.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/PDFBox-0.6.7a.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/log4j-1.2.8.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/tm-extractors-0.4.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/ArabicAnalyzer-1.0b.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/commons-collections-3.1.jar"
>>>>               import os
>>>>               os.system(command)
>>>>               command = "java -classpath 
>>>>$CLASSPATH:/home/ajinkyan/cgi-bin/infoviewer SearchFiles"
>>>>               check=os.system(command)
>>>>               req.write("\ncheck = " + str(check))
>>>>               f  = open(  
>>>>"/home/ajinkyan/cgi-bin/infoviewer/results.txt","r")
>>>>               result=f.read()
>>>>               req.write(result)
>>>>           except:
>>>>
>>>>               req.write("\n")
>>>>               req.write(str(sys.exc_type))
>>>>               req.write("\n")
>>>>               req.write(str(sys.exc_value))
>>>>
>>>>
>>>>
>>>>____________________________________________________________________________________________________________________________
>>>>
>>>># After executing the os.system command the value returned in check is 
>>>>maximum times 256 or some thing near 32000 .
>>>>
>>>># Java program is running independently without any errors. Only when it 
>>>>is called using os.system it doesn't run .
>>>>
>>>># The Java program is as follows
>>>>
>>>>___________________________________________________________________________________________________________________________
>>>>
>>>>
>>>>/**
>>>>* @Name   : SearchFiles.java
>>>>* @Version: 1.0
>>>>* @Author : Alok Khandelwal
>>>>* @Created: 2 August 2005
>>>>* @Purpose: Searching in index for arabic contents
>>>>* @Copyright:(c)2004 by Infogrid Pacific Pte. Ltd.
>>>>* @Licenece :Infogrid Pacific Eula
>>>>*/
>>>>
>>>>
>>>>
>>>>
>>>>import org.apache.lucene.search.Searcher;
>>>>import org.apache.lucene.search.IndexSearcher;
>>>>import org.apache.lucene.search.Query;
>>>>import org.apache.lucene.search.Hits;
>>>>import org.apache.lucene.queryParser.QueryParser;
>>>>import gpl.pierrick.brihaye.aramorph.lucene.ArabicStemAnalyzer;
>>>>import java.io.*;
>>>>import org.apache.lucene.document.Document;
>>>>class SearchFiles
>>>>{
>>>>   public static void main(String[] args)
>>>>   {
>>>>       try
>>>>       {
>>>>           FileInputStream fis = new FileInputStream(new File ( 
>>>>"/home/ajinkyan/cgi-bin/infoviewer/temp.txt"));
>>>>           BufferedReader in = new BufferedReader(new 
>>>>InputStreamReader(fis,"UTF8"));
>>>>           char [] buf = new char[80];
>>>>           int numRead;
>>>>           numRead=in.read(buf,0,80);
>>>>           String field="\"";
>>>>           for(int k=0;k<numRead;k++)
>>>>           {
>>>>               field=field+buf[k];
>>>>           }
>>>>           field=field+"\"";
>>>>           FileOutputStream fos = new FileOutputStream(new File ( 
>>>>"/home/ajinkyan/cgi-bin/infoviewer/results.txt"));
>>>>           BufferedWriter out = new BufferedWriter(new 
>>>>OutputStreamWriter(fos,"UTF8"));
>>>>           Searcher searcher = new 
>>>>IndexSearcher("/home/ajinkyan/cgi-bin/infoviewer/index_arabic");
>>>>           try
>>>>           {
>>>>                   Query query = QueryParser.parse(field, "contents", 
>>>>new ArabicStemAnalyzer());
>>>>                   Hits hits = searcher.search(query);
>>>>                   String output="Total match document = \n";
>>>>                   for(int j=0;j<hits.length();j++)
>>>>                   {
>>>>                       Document doc = hits.doc(j);
>>>>                   //    System.out.print(hits.score(j)+"  ");
>>>>                       output = output +"\n"+ doc.get("filename");
>>>>                   }
>>>>                   out.write(output);
>>>>                   out.write("\n");
>>>>           }
>>>>           catch(Exception e)
>>>>           {
>>>>               out.write("Parser Error");
>>>>               out.write("\n");
>>>>
>>>>           }
>>>>           searcher.close();
>>>>           out.close();
>>>>       }
>>>>       catch (Exception e)
>>>>       {
>>>>           String s= " caught a " + e.getClass() +
>>>>            "\n with message: " + e.getMessage();
>>>>       }
>>>>   }//end of main
>>>>}//end of SerchFiles
>>>>_______________________________________________
>>>>Mod_python mailing list
>>>>Mod_python at modpython.org
>>>>http://mailman.modpython.org/mailman/listinfo/mod_python
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>_______________________________________________
>>Mod_python mailing list
>>Mod_python at modpython.org
>>http://mailman.modpython.org/mailman/listinfo/mod_python
>>    
>>



More information about the Mod_python mailing list