<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
<ejb-deployment ejb-name="CalculatorBean"> <!-- configurar os valores do bean, no resources.xml -->
<properties>
cxf.jaxws.in-interceptors = wss4j
</properties>
</ejb-deployment>
</openejb-jar>
Webservice JAX-WS - Configuração de Recursos
TomEE conta com o Apache CXF para JAX-RS (RESTful Services) e JAX-WS (Web Services). Este é um exemplo de como desenvolver EJB webservices graças a implementação CXF.
openejb-jar.xml Configuração
Você pode usar (openejb-jar.xml) para configurar seu webservice.
CXF API é reutilizável mas além disso você pode configurar os interceptadores através do openejb-jar.xml
(localizados na WEB-INF).
Como um rápido lembrete, a configuração no openejb-jar.xml
, você pode utilizar uma configuração parecida a esta, com o seu próximo EJB:
Para um webservice Pojo é da mesma forma, mas usando o pojo-deployment em vez do ejb-deployment.
Então uma vez que fez sua seleção de prefixo, e conhece onde é para escrever a configuração, basta utilizar as seguintes entradas:
-
properties: propriedades da fábrica servidora
-
features: recursos CXF
-
in-interceptors: interceptadores de entrada do CXF
-
out-interceptors: interceptadores de saída do CXF
-
in-fault-interceptors: interceptadores de entrada do CXF para tratamento de erros
-
out-fault-interceptors: interceptadores de saída do CXF para tratamento de erros
-
databinding: servidor de vinculação de dados
-
providers (somente para endpoint JAX-RS): lista de provedores JAX-RS
-
skip-provider-scanning (somente para JAX-RS): utilizar ou não um provedor de varredura (por padrão true)
Para características e interceptadores, a regra é a mesma: lista de valores separados por vírgula. Cada valor da lista, é um nome de classe qualificado ou um id de serviço, é um ou o outro, no resources.xml.
Exemplo para JAX-WS
Para configurar o WSS4J no EJB CalculatorBean
para adicionar uma instância no openejb-jar.xml:
<resources>
<!-- os interceptadores -->
<Service id="wss4j1" class-name="org.apache.openejb.server.cxf.config.WSS4JInInterceptorFactory" factory-name="create">
action = UsernameToken
passwordType = PasswordText
passwordCallbackClass = org.superbiz.ws.security.PasswordCallbackHandler
</Service>
</resources>
passwordCallbackClass
passwordCallbackClass
é uma propriedade do WSS4JInInterceptorFactory
e seu valor é a classe PasswordCallbackHandler
.
PasswordCallbackHandler
utiliza org.apache.wss4j.common.ext.WSPasswordCallback
para prover senhas no mecanismo de callback.
Exemplo
Exemplo completo pode ser encontrado aqui:
Executando os testes
Exemplo de projeto completo pode ser encontrado aqui.
Este é um projeto maven, e todos os testes pode ser executados rodando o comando mvn clean test
.
mvn clean test
[INFO] Resultados:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
== APIs Used
- link:../../../tomee-9.0/javadoc/org/apache/openejb/OpenEjbContainer.html[org.apache.openejb.OpenEjbContainer]
- link:../../../tomee-9.0/javadoc/org/apache/openejb/loader/SystemInstance.html[org.apache.openejb.loader.SystemInstance]
- link:../../../jakartaee-10.0/javadoc/jakarta/ejb/Singleton.html[jakarta.ejb.Singleton]
- link:../../../jakartaee-10.0/javadoc/jakarta/ejb/embeddable/EJBContainer.html[jakarta.ejb.embeddable.EJBContainer]
- link:../../../jakartaee-10.0/javadoc/jakarta/jws/WebService.html[jakarta.jws.WebService]
- link:../../../jakartaee-10.0/javadoc/jakarta/xml/ws/Service.html[jakarta.xml.ws.Service]
- link:../../../jakartaee-10.0/javadoc/jakarta/xml/ws/soap/SOAPFaultException.html[jakarta.xml.ws.soap.SOAPFaultException]