[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: VideoRentalStoreService
- Subject: Re: VideoRentalStoreService
- From: "Ivan Neto" <ivanneto@xxxxxxxxx>
- Date: Sun, 18 Jun 2006 01:25:30 -0300
Olá Daniel,
estou respondendo para a lista pois mais pessoas podem estar com
problemas parecidos com o seu.
On 6/17/06, Daniel Creão <ldaugusto@xxxxxxxxx> wrote:
Ja programei as classes de implementação RPC e Doc fazem 3 dias mas não
consigo colocar o servidor no ar, nem encontro um bom exemplo para ajudar
então estou com várias dúvidas:
Na descrição do EP3 foi sugerida a criação de uma classe
VideoRentalStoreService que extends ServiceMBeanSupport e implements
VideoRentalStoreServiceMBean. Mas quando 'compila' o WSDL com o wscompile
ele também gera uma VideoRentalStoreService mas que extends
javax.xml.rpc.Service. O fato de ter 2 classes com o mesmo nome (ainda que
em pacotes diferentes) me complicou um pouco: devo usar a classe gerada pelo
WSDL para o servidor e esquecer a outra classe? Achava que devia usar a
mesma classe sugerida na descrição do EP, de forma que ela lide tanto com
WebServices quanto com CORBA simultaneamente. Qual o certo?
É verdade, não tinha reparado no nome em comum, mas note que o
primeiro VideoRentalStoreService é uma classe e o segundo uma
interface. É o seguinte: a classe VideoRentalStoreService que
implementa VideoRentalStoreServiceMBean só é referenciada no
jboss-service.xml. Nenhum código cliente e nenhum outro descritor de
implantação referencia tal classe. Essa classe é uma espécie de
equivalente a classe com o método main do seu servidor CORBA: o código
que estava no main passa para o startService do
VideoRentalStoreService (sem a chamada a ORB.run()). Resumindo: essa
classe VideoRentalStoreService só tem a ver com a parte CORBA, e não
vai ser referenciada de nenhuma parte da implementação do web service
(nem código nem descritores).
A interface VideoRentalStoreService gerada pelo wscompile pode ou não
ser usada na implementação do seu web service (a alternativa seria
usar a interface javax.xml.rpc.Service). Se você for usá-la, precisa
colocar no seu application-client.xml uma linha parecida com esta:
<service-interface>videorentalstore.webservice.VideoRentalStoreService</service-interface>
Observe a definição desta interface:
public interface VideoRentalStoreService extends javax.xml.rpc.Service {
public videorentalstore.webservice.RentalServiceRPC
getRentalServiceRPCPort() ...;
public videorentalstore.webservice.RentalServiceDoc
getRentalServiceDocPort() ...;
}
Veja que ela não tem nada a ver com CORBA, e portanto pode ser usada
apenas na implementação do seu web service. Nesse caso, seu cliente
seria mais ou menos parecido com isso:
VideoRentalStoreService service = (VideoRentalStoreService) new
InitialContext()
.lookup("java:comp/env/service/videorental");
RentalServiceRPC rpcPort = (RentalServiceRPC)
service.getRentalServiceRPCPort();
Ou seja, essa interface apenas especifica quais métodos você pode
esperar no objeto que você "pega" no JNDI (lookup).
Espero ter esclarecido. Qualquer dúvida por favor volte a perguntar.