Conflito de ponto de extremidade de serviço
No momento da implantação do aplicativo composto, o sistema tentará definir um ou mais pontos de extremidade de serviço do(s) processo(s) implantado(s). Cada ponto de extremidade de serviço deve ser exclusivo. Portanto, se você tentar implantar dois processos com a mesma definição de ponto de extremidade de serviço, o sistema sinalizará isso como um erro e a implantação não será bem-sucedida. Será mostrada uma mensagem como a seguinte:
Falha na implantação da composição de serviço. (sucesso parcial)
MENSAGEM: (SOAPBC_DEPLOY_2) Falha ao implantar: java.lang.Exception:
Um ponto de extremidade ativado já possui o mesmo local de endereço de SOAP:
http://localhost:18181/SynchronousSample
C:\<...>\SynchronousSample1Application\nbproject\build-impl.xml:209:
Falha na implantação da composição de serviço.
FALHA NA CONSTRUÇÃO (tempo total: 31 segundos)
Esse tipo de mensagem significa que existe um conflito de ponto de extremidade de serviço. Geralmente, isso acontece devido à tentativa de implantar processos praticamente idênticos que são empacotados em projetos de aplicativo composto distintos. Isso aconteceria, por exemplo, se você chamasse Novo projeto > Amostras > Processo BPEL síncrono (ou qualquer outra amostra) mais de uma vez. Você obterá mais de um módulo BPEL e mais de um projeto de aplicativo composto. Por exemplo, se você seguir o caminho padrão duas vezes. Você terá quatro projetos:
-
SynchronousSample
SynchronousSampleApplication
-
SynchronousSample1
SynchronousSample1Application
Serão aplicativos compostos e processos BPEL distintos, mas, por padrão, eles terão os mesmos endereços de ponto de extremidade definidos nos arquivos SynchronousSample.wsdl. Ambos conterão o seguinte endereço de ponto de extremidade:
<service name="service1">
<port name="port1" binding="tns:binding1">
<documentation/>
<soap:address location="http://localhost:18181/SynchronousSample"/>
</port>
</service>
Se você tentar implantar dois aplicativos compostos (SynchronousSampleApplication e SynchronousSample1Application) com pontos de extremidade de serviço idênticos, a implantação do segundo aplicativo composto falhará devido ao conflito de ponto de extremidade.
Talvez você queira implantar mais de uma versão do aplicativo composto porque deseja fazer modificações em um ou em ambos os processos, e implantar ambos ao mesmo tempo. Talvez você queira comparar o comportamento, lado a lado. Você pode fazê-lo, mas é necessário que os respectivos endereços de ponto de extremidade sejam distintos. Isso significa editar o arquivo wsdl do processo e ajustar o atributo "soap:address location" para que não haja conflito. Você pode ajustar o número da porta ou o nome do serviço. Por exemplo, qualquer um destes seria suficientemente distinto do original:
<soap:address location="http://localhost:18182/SynchronousSample"/>
ou
<soap:address location="http://localhost:18181/SynchronousSampleNew"/>
Desativação de ponto de extremidade
Quando o mecanismo BPEL encontra o conflito de ponto de extremidade, ele pode proativamente desativar o ponto de extremidade em conflito. Quando isso acontecer, essa mensagem será exibida no registro do servidor.
java.lang.RuntimeException: javax.jbi.messaging.MessagingException: Ponto de extremidade foi desativado.
em com.sun.jbi.engine.bpel.EngineChannel.reply(EngineChannel.java:227)
Você pode não notar essa mensagem inicialmente, mas um sintoma desse problema é que as execuções de teste subseqüentes falharão. Quando você vir essa mensagem, certifique-se de resolver o conflito e implantar novamente o aplicativo composto. Então tudo deverá estar resolvido.
Relação de ponto de extremidade de serviço com casos de teste
Cada caso de teste no aplicativo composto tentará enviar a mensagem de entrada para o processo de destino quando você chamar a ação Teste. Para saber para onde enviar a mensagem, cada caso de teste possui uma propriedade chamada "destino". Você pode modificar essa propriedade na janela Propriedades, chamada quando você clica com o botão direito do mouse no nó do caso de teste e escolhe Propriedades na janela pop-up.
destination=http://localhost:18181/SynchronousSample
O valor da propriedade de destino é definido no momento em que o caso de teste é criado. Sendo assim, se você alterar depois o ponto de extremidade de serviço, será necessário ajustar manualmente o atributo de destino de quaisquer casos de teste gerados anteriormente. Obviamente, os casos de teste gerados recentemente estarão OK.
Portas
Porta HTTP do servidor de aplicativos Sun Java System
Por padrão, o instalador do Enterprise Pack tenta configurar a porta HTTP do servidor de aplicativos como 8080. Alguns processos presumem que o valor é 8080. Se por algum motivo a porta HTTP do servidor de arquivos não for 8080, você terá que fazer ajustes nas amostras.
Em especial, a amostra Serviço de reserva de viagens necessitará de alguns ajustes.
Presuma, por exemplo, que o servidor de aplicativos esteja escutando na porta HTTP 8090 (não na padrão 8080). Neste caso, você terá que fazer o seguinte:
Ajustar os arquivos WSDL dos serviços de parceiro de reserva
-
No módulo BPEL TravelReservationService, altere o valor do endereço de soap no
AirlineReservationService.wsdl de
<soap:address
location="http://localhost:8080/webservice/AirlineReservationService"/>
para
<soap:address
location="http://localhost:8090/webservice/AirlineReservationService"/>
-
Atualize também os valores de endereço de soap no VehicleReservationService.wsdl e
HotelReservationService.wsdl
Observação: Para descobrir em qual porta HTTP o servidor de aplicativos está escutando, abra a janela Tempo de execução, clique com o botão direito do mouse no nó Servidor de aplicativos Sun Java System 9 e escolha Exibir console de administração. Isso abre o console de administração do servidor de aplicativos Sun Java System no navegador. Digite o nome de usuário e a senha (os valores padrão são admin/adminadmin), e faça logon. Clique em Servidor de aplicativos no painel esquerdo e escolha a guia Geral no painel direito. O valor da porta HTTP de que você precisa é o primeiro na linha Porta (s) HTTP: texto.
Como alternativa, localize as linhas seguintes no registro do servidor de aplicativos:
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8080
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8181
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 4848
O valor de que você precisa está na primeira linha.
Conflito de ponto de extremidade do serviço de reserva de viagens
Consulte a seção Conflito de ponto de extremidade de serviço acima para obter uma descrição geral do problema. Entretanto, no caso da amostra Serviço de reserva de viagens, você deve seguir estas etapas adicionais:
Se a porta 18181 não estiver disponível, e se você quiser executar o TRS em outra porta, tal como 19191, siga o conjunto de etapas seguinte:
Alterar URLs
Abra TravelReservationService.wsdl.
Na marca service altere,
soap:address location="http://localhost:18181/TravelReservation/buildItinerary"/
para
soap:address location="http://localhost:19191/TravelReservation/buildItinerary"/
Atualize também o URL de airlineReserved, hotelReserved e vehicleReserved.
Ajustar o projeto EJB do parceiro, ReservationPartnerServices
Realize as seguintes etapas:
-
No IDE, abra o projeto ReservationPartnerServices.
(O IDE criou o projeto ReservationPartnerServices no local em que você criou o projeto TravelReservationService).
-
Na janela Projetos, expanda o nó do projeto ReservationPartnerServices, expanda o nó Arquivos de configuração, e clique duas vezes no nó ejb-jar.xml para abrir o arquivo no editor visual ejb-jar.xml.
-
No editor, em Enterprise Beans, clique em ReservationCallBackProviderMDB para expandir a entrada. Expanda Ambiente do Bean e Entradas do ambiente.
-
Em Entradas do ambiente, selecione cada entrada e clique em Editar para alterar o número da porta 18181 no campo Valor de entrada.
Por exemplo, para AirlineCallbackURL, altere
http://localhost:18181/TravelReservation/airlineReserved
para
http://localhost:19191/TravelReservation/airlineReserved
Atualizar a propriedade de destino
-
No projeto composto TravelReservationServiceApplication:
-
Expanda o nó Teste e para cada nó de caso de teste abaixo dele:
-
Clique com o botão direito do mouse no nó do caso de teste e escolha Propriedades.
-
Na janela Propriedades, atualize o valor da propriedade de destino.
Exemplo:
Altere http://localhost:18181/TravelReservation/buildItinerary
para
http://localhost:19191/TravelReservation/buildItinerary
Execução de teste
Ao executar um caso de teste:
-
Se o arquivo Output.xml estiver vazio (ele fica vazio depois que um novo caso de teste é criado), você será solicitado a decidir se Output.xml deve ser preenchido com a resposta da primeira execução de teste. Essa primeira saída da execução de teste indicará se houve falha.
-
Se o arquivo Output.xml não estiver vazio, os resultados obtidos serão comparados com o conteúdo desse arquivo; caso coincidam, ficará marcado que a execução de teste passou.
Falhas da execução de teste
Se você receber uma execução de teste falha, adote um ou ambos procedimentos seguintes:
-
Verifique a mensagem da resposta depois de uma execução de teste falha. A mensagem da resposta está disponível no nó do caso de teste na janela Projetos. A mensagem da resposta possui carimbo de data e hora.
Você pode verificar se a resposta não corresponde ao esperado (ou seja, Output.xml) e talvez isso o ajude a entender o problema.
-
Verifique o arquivo de registro do servidor após uma execução de teste falha.
Para fazê-lo, vá para a guia Tempo de execução do IDE. Selecione a ação Exibir registro do servidor no nó Servidor de aplicativos Sun Java System.
Isso mostra o conteúdo do registro do servidor e talvez contenha informações sobre o motivo da falha da execução de teste.
Um caso específico de falhas de execução de teste está relacionado a testes que usam correlações baseadas em conteúdo incorporadas no Input.xml (por exemplo, os arquivos Input.xml nos casos de teste do Serviço de reserva de viagens têm <UniqueID>...</UniqueID> como a base da correlação). Nesta situação, se você executar o caso de teste quando já houver uma instância do processo em execução iniciada pelo mesmo caso de teste, a segunda instância do processo não será iniciada e o teste falhará. A mensagem seguinte será exibida no registro do servidor de aplicativos Sun Java System:
Ocorreu uma exceção ao executar uma instância do processo comercial.
com.sun.jbi.engine.bpel.core.bpel.exception.CorrelationAlreadyExists: Uma instância está associada à correlação
<...>
Desativando firewalls ao usar servidores
Talvez você queira desativar o firewall para que possa implantar, executar, depurar ou testar aplicativos com êxito no servidor de aplicativos ou processos comerciais no servidor BPEL.
Modificações em arquivos XSD e WSDL
Problema 81190
Quando você modifica os arquivos XSD e WSDL, a validação BPEL não é iniciada automaticamente. A validação BPEL só é chamada quando você faz alterações no arquivo BPEL ou realiza uma ação de construção ou implantação no projeto BPEL. Você também pode chamar manualmente a validação BPEL, clicando com o botão direito do mouse no botão Validar XML (Alt+Shift+F9) na exibição Design ou na barra de ferramentas da exibição Fonte. Para obter mais informações, consulte a seção Validação.
Problema 86274
Se os arquivos XSD ou WSDL não estiverem bem formados, corrija o problema. Entretanto, observe que o arquivo BPEL não refletirá as alterações feitas nos arquivos XSD e WSDL até que você reabra o arquivo BPEL.
Uso necessário do conjunto de correlações não detectado pelo sistema de validação
O mecanismo de serviço BPEL requer o uso preciso dos conjuntos de correlações. Atualmente, o sistema de validação não detecta violações dos seguintes requisitos:
-
OnMessage: O elemento OnMessage deverá ter um filho <correlations> válido se OnMessage for usado em uma atividade Selecionar que não tenha o atributo createInstance="yes".
-
Receber: O elemento Receber deverá ter um filho <correlations> válido caso não tenha o atributo createInstance="yes".
-
OnEvent: O elemento OnEvent deve ter um filho <correlations> válido.
Alterações no serviço de parceiro
Problema 86499
Se a interface do serviço de parceiro sofrer alterações, por exemplo, quando a assinatura de uma operação de serviço da Web é alterada, e você não tiver importado o arquivo WSDL modificado, o processo BPEL trava. Você tem que importar o novo arquivo WSDL e reimplantar o aplicativo. Você talvez precise iniciar o mecanismo de serviço BPEL.
Excluir incorretamente a propriedade do conjunto de correlações no navegador exclui a propriedade do WSDL
Problema 87221
Se você excluir a propriedade de um conjunto de correlações usando os comandos do menu pop-up no navegador, a propriedade será incorretamente excluída do arquivo WSDL. A solução seria o uso do editor do conjunto de correlações e não a ação do menu pop-up Excluir no próprio nó Propriedade.
Cancelando a caixa de diálogo PartnerLink
Arrastar um arquivo WSDL ou um nó do serviço da Web de um projeto NetBeans para um digrama do módulo BPEL causa diversos efeitos. Esses efeitos incluem a "recuperação" automática do(s) arquivo(s) WSDL do objeto de origem arrastado. Ao cancelar a caixa de diálogo PartnerLink, que é exibida ao se arrastar um arquivo WSDL ou um nó do serviço da Web de um projeto NetBeans para um diagrama, o IDE não reverte a recuperação do(s) arquivo(s) WSDL. Se estes arquivos não forem necessários para o projeto, simplesmente exclua-os manualmente na janela Projetos, como faria com outro recurso do projeto.
Os comandos Desfazer e Refazer
Problema 84793
Os comandos Desfazer e Refazer não estão disponíveis quando a janela Navegador possui o foco. Para acessar os comandos Desfazer e Refazer, coloque o foco no diagrama. Você poderá desfazer e refazer as alterações iniciadas na janela Navegador.
Depurando
Adicionando pontos de interrupção ao depurar
Problema 82497
Caso haja uma sessão de depuração ativa, você só poderá adicionar pontos de interrupção na linguagem da sessão de depuração ativa. Por exemplo, se houver uma sessão de depuração BPEL ativa, você não poderá adicionar pontos de interrupção ao código java e vice-versa. A solução é tornar ativa a sessão de depuração relacionada à linguagem na qual você deseja adicionar os pontos de interrupção. Como alternativa, para adicionar pontos de interrupção, feche todas as sessões de depuração.
Mensagens do console do depurador BPEL
Você pode ver as mensagens seguintes no console do depurador BPEL:
-
Conectando a <host>:<port>
-
O depurador está tentando se conectar ao mecanismo de serviço BPEL.
-
Sessão de depuração iniciada
-
O depurador se conectou com êxito ao mecanismo de serviço BPEL e a sessão de depuração foi iniciada.
-
Impossível iniciar uma sessão de depuração : Impossível conectar a <host>:<port> Conexão expirada: conectar
-
Se aparecer essa mensagem, verifique o seguinte:
-
O servidor de aplicativos Java System está em execução.
-
O mecanismo de serviço BPEL foi iniciado.
-
A propriedade DebugEnabled do mecanismo de serviço BPEL está definida como verdadeira.
-
O nome do host é o mesmo da máquina que executa o servidor de aplicativos Sun Java System ao qual você está se conectando (localhost por padrão).
-
O valor da porta é o mesmo da propriedade DebugPort do mecanismo de serviço BPEL ao qual você está se conectando (3343 por padrão).
-
Impossível iniciar uma sessão de depuração : Já conectado a <host>:<port>
-
Já existe uma sessão de depuração em execução anexada a este mecanismo de serviço específico.
-
Sessão de depuração terminada : Destino desconectado
-
O depurador perdeu a conexão com o servidor. Verifique se o servidor está em execução e se a rede está funcionando.
-
Parar conexão
-
Você terminou explicitamente a sessão de depuração quando ela estava se conectando.
-
Sessão de depuração finalizada
-
Você terminou explicitamente a sessão de depuração quando ela estava em execução.
O depurador mistura as fontes BPEL de diferentes projetos
Problema 79288
Se você tem dois processos com o mesmo nome no IDE e tem pontos de interrupção definidos em ambos processos, porém em elementos diferentes, o Depurador BPEL pára nos pontos de interrupção especificados em ambos processos quando somente um deles é implantado e depurado. Isso acontece porque o Depurador BPEL está anexado ao próprio mecanismo BPEL e não a um processo à parte.
Suponha que você tem dois projetos com nomes diferentes (por exemplo, SynchronousSample e SynchronousSample1) mas que ambos os projetos contêm processos com nomes idênticos (SynchronousSample). Suponha também, que ambos os processos têm pontos de interrupção definidos, que um desses processos, SynchronousSample, está implantado e que o outro, SynchronousSample1, está fechado, nem sequer está aberto no IDE. Quando você começa a realizar a depuração, o depurador pára em TODOS os pontos de interrupção (isto é, a união dos pontos de interrupção dos dois arquivos). Isso cria um efeito surpreendente porque o IDE abre automaticamente um arquivo de origem quando encontra um ponto de interrupção, neste exemplo, ele abre o arquivo de processo SynchronousSample1.SynchronousSample, e pára em um dos seus pontos de interrupção. A solução para este problema é apagar os pontos de interrupção dos processos que estão em conflito.
Para obter mais informações sobre depuração, consulte a seção Depurando processos BPEL.
Impossível mostrar o diagrama
Problema 87719
Normalmente, a exibição Design só mostrará a mensagem "Impossível mostrar o diagrama" quando a fonte BPEL não estiver bem formada. Neste caso, o procedimento recomendado é ir para a exibição Fonte e executar a ação "Verificar XML" e/ou a ação "Validar XML". Elas lhe informarão o que precisa ser corrigido na fonte BPEL. Faça as correções. Salve o arquivo. Neste ponto, a exibição Design deve processar o diagrama corretamente. Entretanto, existem alguns casos em que a exibição Design informa "Impossível mostrar o diagrama" mesmo quando o arquivo BPEL está bem formado. Este caso é descrito no Problema 87719. Neste caso, o arquivo BPEL está realmente bem formado, mas a exibição Design continua a informar "Impossível mostrar o diagrama". A única solução para este caso é reiniciar o IDE. Depois do reinício, o diagrama deve ser processado corretamente.