Web Services – Java + PHP5

Estudando a disciplina de Sistemas Operacionais Distribuidos, como exercício implementamos um Web Service utilizando framework axis para gerar os arquivos wsdl. O web Service implementa o Método Monte Carlo para aproximação do número PI.

Para isso, montamos um servidor utilizando a linguagem JAVA e um cliente utilizando a linguagem PHP para acessar o Web Service. Os códigos seguem a seguir:

Servidor:

MonteCarloService.jws

import java.util.Random;

public class MonteCarloService {
public int pi(int tentativas) {
int hits=0, i;
double x, y;
Random rand = new Random();

for (i=0;i< tentativas; i++) {
x = rand.nextDouble();
y = rand.nextDouble();
if(x * x + y * y < 1.0) {
++hits;
}
}
return hits;
}
}

O servidor possui apenas um método com a função PI, sendo que o framework axis disponibiliza o serviço como Web Service.

Cliente:

client.php

<?php

$tentativas = 100000;
$servidores = array (“192.168.0.3″,”127.0.0.1″,”200.239.56.145″);
$qtdeAtivos = 0;
$totalhits = 0;
$i = 0;

function url_exists($url){
$servico = @fopen($url, “r”);
if ($servico === false)
return false;
fclose($servico);
return true;
}

foreach ($servidores as $valor){
if (url_exists(“http://”.$valor.”:8080/axis/MonteCarloService.jws?wsdl”)){
$ativos[$i] = new SoapClient(“http://”.$valor.”:8080/axis/MonteCarloService.jws?wsdl”);
$i++;
}
}
$qtdeAtivos = $i;

for ($i=0;$i<$qtdeAtivos;$i++){
$totalhits+= $ativos[$i]->pi($tentativas/$qtdeAtivos);
}

echo $qtdeAtivos.” servidores ativos<br>”;
$pi = 4.0 * $totalhits / $tentativas;
if($pi!=0) echo “Valor de PI: “.$pi;
else echo “Impossível calcular o valor de PI”;
?>

O cliente verifica a quantidade de servidores que estão rodando o Web Service, e distribuem o processamento da função PI. Ao final, se houver algum servidor ativo, é mostrado o valor aproximado de PI.

Como PHP não oferece o uso de threads, não se vê ganho em processamento pela distribuição, porém, nesses casos, pode-se utilizar outras métodos de programação.

Explore posts in the same categories: Dicas

6 Comments on “Web Services – Java + PHP5”


  1. Parabéns pela idéia de publicar os trabalhos. Eu acho que isso é uma maneira de manter um currículo sempre atualizado e mostrar o que é capaz de fazer.

  2. adri Says:

    oi meu bem…
    tah eu sei q isso naum é p mim né
    mas eu li tudo…
    apesar de naum entender muito
    fikei muitooo orgulhosa de vc meu amor!

    ti amo tah.. e desculpa se meter até aki
    mas naum resisti..=)

    beijus

  3. ricardo Says:

    oi meu socio…
    eu sei que eu nao te ajudei a fazer…
    mas eu li tudo
    apesar de nao entender nada
    fiquei feliz de nos termos apresentado direitinho

    hauhauh

    caso o elton voltar a ler isto aki… a parte de que eu nao fiz nada eh mentira…


  4. Já retirei tua nota do trabalho
    heheh


  5. Bah… vo precisa dos créditos samuca…

    hauhau… Falow


  6. Samuel, flndo sério agora.

    Tenho uma aplicação WEB (PHP) q é o front end com os usuários ok.
    E tenho um serviço Java q faz a comunicação com o nosso hardware. Tem coisas, q deveriam ser perguntadas pro Hardware sem passar pelo banco de dados. Tipo, como funciona hje, tenho uma tabela chmada de comandos, q o PHP insere um comando q deve ser enviado para nosso hardware, e o java q irá abrir um socket com o hardware e mandar o tal comando. Mas tipo, o PHP qr simplesmente saber o horário q está no relógio do hardware, nao queria inserir um comando, e sim, fazer com q o PHP comunique direto com o JAVA (WS seria uma boa solução…) e o Java conversasse com o hardware e já desse a respostapro PHP mostrar na tela para o usuários. O problema é q não consigo aceitar que terei q instalar o Tomcat, com o axis, só para isso. Vê alguma outra alternativa???

    valeu. parabéns. flw


Comment: