PDA

Visualizza la versione completa : [JAVA] Chiamata a procedure C++ su Tomcat


archimede03
06-07-2005, 12:32
Ciao
ho un problema che mi sta facendo impazzire.
Ho un'applicazione che lancia una procedura c++ la quale deve leggere un file.
Se eseguo l'applicazione da JBuilder tutto funziona (sia che il file sia in locale sia che si trovi su un'altra macchina della rete), ma quando sposto l'applicazione in un Tomcat esterno a JBuilder funziona solo con il file in locale.
E' come se tomcat bloccasse l'uscita della procedura!!!
C' qualcosa che devo settare in tomcat?
Grazie

alka
06-07-2005, 14:14
Scusa ma...si tratta di Java o di C++?

Che relazione hanno i due linguaggi nel tuo sistema?
A me non parso chiaro...

Ciao! :ciauz:

netarrow
06-07-2005, 15:56
Originariamente inviato da archimede03
Ciao
ho un problema che mi sta facendo impazzire.
Ho un'applicazione che lancia una procedura c++ la quale deve leggere un file.
Se eseguo l'applicazione da JBuilder tutto funziona (sia che il file sia in locale sia che si trovi su un'altra macchina della rete), ma quando sposto l'applicazione in un Tomcat esterno a JBuilder funziona solo con il file in locale.
E' come se tomcat bloccasse l'uscita della procedura!!!
C' qualcosa che devo settare in tomcat?
Grazie

usi metodi nativi o lanci un programma esterno con excec?

Vedi se tomcat ha un file per la gestione della sicurezza, evidentemente codice nativo che si collega a file remoti ritenuto unsafe.

:ciauz:

archimede03
06-07-2005, 19:25
La relazione tra i due linguaggi che java lancia un file .exe realizzato in c++ e la chiamata avviene attraverso un oggetto di Runtime,cio:
Runtime r = java.lang.Runtime.getRuntime();
Process p = r.exec(comando);

Per quanto riguarda la configurazione di tomcat pensi si tratti di un file xml apposito o di qualcosa nel server.xml, perch questo l'ho guardato e non mi sembra facile intuire qualcosa
Ciao

netarrow
06-07-2005, 19:35
bh prova a copiare tutti i file di configurazione del tomcat di JBuilder e mettili nell'altro, se da ancora problemi da rivedere il codice della parte in C++.

:ciauz:

archimede03
07-07-2005, 10:13
avevo gi provato una soluzione del genere, ma sono configurazioni talmente diverse che tomcat non partiva pi. Ora mi sto documentando sul file catalina.policy che sebra contenere informazioni sui permessi, ma sono ancora all'inizio
Ciao

archimede03
05-08-2005, 15:57
Ciao eccomi di nuovo con un vecchio problema.
Ho provato sd inserire nel file catalina.policy la riga
permission java.lang.RuntimePermission "*";
perch ho letto che questa classe controlla i diritti di esecuzione di comandi come exec() ed exit().
Il problema che ancora non funziona!!! :dh:
Aiuto

netarrow
06-08-2005, 17:01
esiste un action o un target * nei permission? Prova ad usare un sistema pi brutale:

permission java.security.AllPermission

Cos gli dai tutto e non ti devi fare problemi. :)

:ciauz:

archimede03
08-08-2005, 11:00
Tutti i java.security sono settati ad All
Comunque questo il mio file di policy

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// ================================================== ==========================
// catalina.corepolicy - Security Policy Permissions for Tomcat 5
//
// This file contains a default set of security policies to be enforced (by the
// JVM) when Catalina is executed with the "-security" option. In addition
// to the permissions granted here, the following additional permissions are
// granted to the codebase specific to each web application:
//
// * Read access to the document root directory
//
// $Id: catalina.policy,v 1.10 2003/09/10 18:47:18 remm Exp $
// ================================================== ==========================


// ========== SYSTEM CODE PERMISSIONS =========================================


// These permissions apply to javac
grant codeBase "file:${java.home}/lib/-" {
permission java.security.AllPermission;
};

// These permissions apply to all shared system extensions
grant codeBase "file:${java.home}/jre/lib/ext/-" {
permission java.security.AllPermission;
};

// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre
grant codeBase "file:${java.home}/../lib/-" {
permission java.security.AllPermission;
};

// These permissions apply to all shared system extensions when
// ${java.home} points at $JAVA_HOME/jre
grant codeBase "file:${java.home}/lib/ext/-" {
permission java.security.AllPermission;
};


// ========== CATALINA CODE PERMISSIONS =======================================


// These permissions apply to the launcher code
grant codeBase "file:${catalina.home}/bin/commons-launcher.jar" {
permission java.security.AllPermission;
};

// These permissions apply to the daemon code
grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
permission java.security.AllPermission;
};

// These permissions apply to the commons-logging API
grant codeBase "file:${catalina.home}/bin/commons-logging-api.jar" {
permission java.security.AllPermission;
};

// These permissions apply to the server startup code
grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
permission java.security.AllPermission;
};

// These permissions apply to the servlet API classes
// and those that are shared across all class loaders
// located in the "common" directory
grant codeBase "file:${catalina.home}/common/-" {
permission java.security.AllPermission;
};

// These permissions apply to the container's core code, plus any additional
// libraries installed in the "server" directory
grant codeBase "file:${catalina.home}/server/-" {
permission java.security.AllPermission;
};

// ========== WEB APPLICATION PERMISSIONS =====================================


// These permissions are granted by default to all web applications
// In addition, a web application will be given a read FilePermission
// and JndiPermission for all files and directories in its document root.
grant {
// Required for JNDI lookup of named JDBC DataSource's and
// javamail named MimePart DataSource used to send mail
permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "java.naming.*", "read";
permission java.util.PropertyPermission "javax.sql.*", "read";

// OS Specific properties to allow read access
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "path.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";

// JVM properties to allow read access
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";

permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";

// Required for OpenJMX
permission java.lang.RuntimePermission "*";

// Allow read of JAXP compliant XML parser debug
permission java.util.PropertyPermission "jaxp.debug", "read";

// Precompiled JSPs need access to this package.
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime.*";

};


// You can assign additional permissions to particular web applications by
// adding additional "grant" entries here, based on the code base for that
// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.
//
// Different permissions can be granted to JSP pages, classes loaded from
// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/
// directory, or even to individual jar files in the /WEB-INF/lib/ directory.
//
// For instance, assume that the standard "examples" application
// included a JDBC driver that needed to establish a network connection to the
// corresponding database and used the scrape taglib to get the weather from
// the NOAA web server. You might create a "grant" entries like this:
//
// The permissions granted to the context root directory apply to JSP pages.
// grant codeBase "file:${catalina.home}/webapps/examples/-" {
// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
// };
//
// The permissions granted to the context WEB-INF/classes directory
// grant codeBase "file:${catalina.home}/webapps/examples/WEB-INF/classes/-" {
// };
//
// The permission granted to your JDBC driver
// grant codeBase "jar:file:${catalina.home}/webapps/examples/WEB-INF/lib/driver.jar!/-" {
// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
// };
// The permission granted to the scrape taglib
// grant codeBase "jar:file:${catalina.home}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
// };

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%

archimede03
09-08-2005, 16:13
non c' proprio nessuno che possa aiutarmi????
Io per ora ho dovuto sostituire la lettura da remoto con un upload, ma i tempi si allungano!!!!!!!!!!!!!!!
:dh:

Loading