blob: 95c481255b2239e979bfdcc62611fe50629e01b4 [file] [log] [blame]
:index-group: Webservice
:jbake-type: page
:jbake-status: published
= 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 (http://tomee.apache.org/details-on-openejb-jar.html[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:
[source,xml]
----
<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>
----
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:
[source,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 https://github.com/apache/tomee/blob/master/examples/webservice-ws-with-resources-config/src/main/java/org/superbiz/ws/security/PasswordCallbackHandler.java[aqui]:
=== Executando os testes
Exemplo de projeto completo pode ser encontrado https://github.com/apache/tomee/tree/master/examples/webservice-ws-with-resources-config[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