Salve.
OBS: Esse post é um relato, porém, pode salvar uma alma-viva que deseja habilitar a integração PHP / Java. Se você for uma dessas almas-vidas, leia tudo
Estava eu na mesmisse de sempre, quando um camarada meu me chamou para algo novo: configurar um servidor apache que rodasse php e esse php tivesse suporte ao Java dentro dele. Achou confuso, pois é, nessa hora eu parei, pensei e disse: "heiiiin ?". Começava assim uma saga!
Ok, aparentemente tudo perfeito. Dia ensolarado, por volta de 11 horas começamos o trampo. Vamos ao perfil:
- Escritório de desenvolvimento de software.
- Máquina disponível para o serviço: algum Pentium da vida com uma MoBo Azus
- Sistema operacional: Fedora Core 5 (Ivan, era isso ? huhuhu)
Mal agente (Ivan e eu) sabiamos que aquele dia, só tinha o solzinho bom, e olha que nem pude aproveita-lo, afinal estava num escritório :S
Instala Fedora nele. Após a instalação zuada (me desculpe quem gosta de Fedora, mas é a real) dele, o sistema iniciou. Beleza. Rede via DHCP, delícia. Ok, fui compilar o PHP, afinal o Apache já encontrava-se instalado.
Primeiro problema: essa coisa feia não possuia o compilador C instalado :S
Solução: Usar um cara chamado Yum para instalar para nós ![]()
Problema de número 2: Ele precisa atualizar algumas coisas, afinal o GCC depende de outros pacotes. Beleza, instalou a versão mais recente desses pacotes.
Voltei a compilação do PHP e:
Problema de número 3: Sem suporte a CPP e g++. Sem eles, nada de compilação de PHP.
Solução: Usar (ou melhor, tentar, usar) o Yum. Rá, quem dera! O Yum não tinha esses pacotes na base dele. (Noooosa que aplicativo bom, hein ?!)
OK, voltei ao CD do Fedora Core 5 e tentei instalar por lá, afinal a Linux Mall vendeu 5 CD's desse distro para o Ivan, em algum deles deve estar, né ?
Quando eu finalmente achei (cada pedaço em um CD [Nota: Organização 0]) ele não deixava eu atualizar por quê ?? Isso, porque o Yum atualizou o GCC para a versão mais recente.
Preciso comentar que o Apache default do Fedora não trazia o Apxs ? Acho que não né...
Desisto do Fedora. O que mais temos por aqui ?
Sim, nosso colega ao lado possuia os CD's do Debian Sarge, também copiados nos estúdios da Linux Mall ![]()
Instalação rapidinha tudo lindo. Aaaah agora vai, pensei eu! Pfff, que nada! Apenas o sol estava brilhante lá fora, nada mais era bom.
Problema de número... aaah perdi a conta! O infeliz (para não perder o nível) do APT queria REMOVER o Kernel-ide quando eu simplemente pedi para ele instalar o gcc! Debian User's, me desculpe, mas realmente o APT é uma m*, como o Henrique costuma falar.
Olho no relógio e já são apenas 14 horas. Putzz. Resolvi voltar em casa (que não é tão perto desse cliente) pegar os CD's de duas distros que realmente funcionam! São elas: Slackware e Arch. O resto ? Resto eu diria...
Voltando lá novamente, eu instalo o Slackware 11 com kernel 2.4 na hd sata do cliente. Ok!
Problema de número "n": o hotplug não encontrou o driver da placa de rede.
Solução: # lspci e caçar no kernel o driver. Para uma placa Marvell Gigabit Ethernet, o driver sk98lin (acho que era isso) funcionou perfeitamente, para minha sorte.
Com o Slackware instalado eu instalei o Apache e o PHP, porém, faltava o principal: a integração PHP / Java.
O módulo do PHP
Achou que sofri bastante ? Não estamos nem na metade!
Para começar, o site do PHP.net já diz:
Esta estensão » PECL não vem compilada com o PHP.
Ou seja, pegar o módulo on the fly e compilar a parte para depois carregá-lo dinamicamente no PHP e blablabla blablabla blablabla[..]
O salva almas-vivas
O módulo eu fui encontrar bem depois, logo ali perdido nos comentários dos usuários!
O módulo é o PHP-Java-bridge.
Eu peguei a versão mais recente, em source-code mesmo, para evitar problemas.
Após baixar, basta descompactar e rodar dentro do pacote extraído o comando:
# phpize
Após isso, você pode compilar esse módulo usando:
# ./configure --with-java=/seu/path/para/seu/jdk
Após, rode um:
# make
# make install-modules
Ele vai indicar onde o módulo foi instalado para você. Geralmente em: /usr/lib/php/extensions/php. Verá que dentro desse diretório há o que nós queremos: o java.so.
Com isso, abra seu php.ini e na linha extension_dir="./" mude para:
; Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/lib/php/extensions/php"
Procure agora pela linha: ;extension=php_mbstring.dll e adicione antes dela:
extension=java.so
E por fim (aí esta a jogada) eu apanhei um bocado para descobrir até que às 1:30 da manhã eu descobri, você precisa alterar também:
[Java]
;java.class.path = .\php_java.jar
;java.home= c:\
;java.library = c:\jdk\jre\bin\hotspot\jvm.dll
;java.library.path=c:\
Para:
[Java]
;java.class.path = .\php_java.jar
java.home=/caminho/do/seu/jdk
;java.library = c:\jdk\jre\bin\hotspot\jvm.dll
java.library.path=/usr/lib/php/extensions
Salve o arquivo. Reinicie o daemon do Apache. Rode um phpinfo() e procure pelo módulo do Java carregado lá!
Para ter 100% de certeza do funcionamento, rode um script proposto no site do PHP.net:
-
<?php
-
// get instance of Java class java.lang.System in PHP
-
$system = new Java('java.lang.System');
-
-
// demonstrate property access
-
$system->getProperty('os.version') . ' on ' .
-
$system->getProperty('os.arch') . ' <br />';
-
-
// java.util.Date example
-
$formatter = new Java('java.text.SimpleDateFormat',
-
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
-
-
?>
Pronto, a integração está concluída.
Tudo, ok senão fosse o cliente requer rodar sua própria JAR
E voltamos novamente a pensar... o que fazer ? Sem meias voltas (apanhamos um bocado para descobrir) a solução foi chamar o jar do cliente usando o java_require()
-
<?php
-
-
java_require($_SERVER['DOCUMENT_ROOT'] . "/path/para/meu/pacote.jar");
-
-
$pac = new Java("com.empresa.familia.pacote.Classe");
-
-
?>
Sem esquecer que essa integração ficou mais simples pois eu no final das contas, instalei ArchLinux!
Pronto, e assim nossa missão estava finalizada. Cliente satisfeito, e eu volto a minha mesmisse de sempre

![integração php/java [img]](http://helio.hlegius.pro.br/imagens/screen/phpejava_peq.jpg)





Vlwwwww!!!!!!!! salvou minha vida (instalei no debian
)
epa, faltou uma coisa (:P) vc sabe como (e se pode) usar swing ou awt do java desta forma??? como por exemplo um jOptionPane??
David,
Realmente eu no cheguei a testar essas possibilidades. Agora fiquei na dvida tambm =) Caso consiga, d um report aqui para ns, ok ? Talvez funcione rodando o script PHP pela linha de comando!
Eu uso o slackware e dentro da pasta do php-java-bridge eu dei o seguinte comando:
#phpize
Cannot find config.m4.
Make sure that you run ‘/usr/bin/phpize’ in the top level source directory of the module
Rmulo,
Muito provavelmente voc baixou um pacote corrompido, ou algo similar, pois pela mensagem de erro ele reclama a falta de um arquivo no pacote java-bridge. Tente baixar novamente o bridge!
Abrao!
Agora vamos ver se eu consigo fazer isso no ruindows aqui do escritrio :p
Opa!
Tenho grande interesse de fazer essa integração PHP/Java..
Gostaria de usar ireports para relatórios em aplicações que utilizam PHP, porém gostaria de fazer os testes e de rodar em ambiente windows!
Saberia como proceder?
Grato!
Tenho grande interesse de fazer essa integração PHP/Java..
Gostaria de usar ireports para relatórios em aplicações que utilizam PHP, porém gostaria de fazer os testes e de rodar em ambiente windows!
Saberia como proceder?
Grato!
Caro hlegius, obrigado por compartilhar!!!
Estava procurando por essa info.