2011-12-02 10 views
5

Ho un programma java con un'API Java valida, ma voglio creare un'interfaccia primitiva tra la mia applicazione java e uno script php in quanto questi sono i requisiti del mio progetto.Esecuzione di applicazioni Java e PHP

Il mio primo tentativo è stato quello di scrivere uno script PHP che eseguisse una funzione passthru per eseguire il jar. cioè

passthru("java -jar myjarfile param1 param2 param3") 

questo ha funzionato, ma ha dimostrato di essere piuttosto lento perché il file jar doveva essere lanciato ed eseguito ecc

Il mio prossimo tentativo è stato quello di creare un servlet su Tomcat7 e interfacciarlo con PHP per il usin comando curl(). cioè

curl(http://myserver/mywebapp/myservlet?p1=param1&p2=param2&p3=param3); 

Ciò ha avuto ottime prestazioni, ma il servlet era molto instabile e si è schiantato dopo circa 5 minuti (io ero il caricamento del server con circa 1 richiesta ogni 10 secondi)

vengo a Stack Overflow chiedendo: sto facendo questo giusto? C'è un modo migliore? Come posso avere il mio programma java in esecuzione in un jvm e interagire con esso utilizzando PHP?

Grazie

+0

Se fossi in te, utilizzerei il secondo metodo che descrivi, ma migliorerei la stabilità del servlet. Hai idea del perché si blocca? Inoltre, si tratta di un crash JVM completo, o è un'eccezione nel servlet? – Tom

+0

Era un'eccezione servlet. Ho risolto il problema passando a Jetty, che è stabile – Tucker

risposta

3

C'è un mondo di differenza tra il metodo Java di gestire le cose e il metodo PHP di gestire le cose.

PHP esegue praticamente ogni script dall'inizio alla fine per ogni richiesta, il che equivale a una tecnica di programmazione molto imperativa. Java, d'altra parte, in genere gestisce le cose da moduli che rimangono in memoria per molte più di una richiesta. Per integrare i due, è necessario considerare più che le "chiamate di funzione", è necessario considerare come questi due ambienti possono essere messi in rete in modo pulito.

L'avvio della richiesta java per PHP richiede a Java di comportarsi come PHP. In altre parole, eliminerai la maggior parte dei migliori motivi per utilizzare Java rendendolo funzionante come PHP. Prendi invece in considerazione la possibilità di impostare un'istanza Tomcat (o qualcosa di simile) e passare una richiesta da una all'altra. In altre parole, fare in modo che il PHP faccia una richiesta web in un ambiente Java, che gestisca le cose senza completare l'accumulo e il teardown dell'interprete Java (che è il modo in cui PHP gestisce le cose).

1

Suppongo che poiché si è tentato di utilizzare un JAR è possibile avere PHP e Java sullo stesso computer. È possibile trovare questo documento su Java integration in PHP piuttosto eccitante. Nota che non l'ho mai usato, so solo che esiste. Assicurati di leggere l'introduzione.

Problemi correlati