É possível configurar Java™ API para aplicativos de Serviços da Web RESTful (JAX-RS) em diversas maneiras dependendo das suas necessidades. Para aproveitar a funcionalidade Java Platform, Enterprise Edition (Java EE) 6, é possível usar os recursos de varredura de anotação.
Ao usar a varredura de anotação, é possível omitir uma subclasse JAX-RS javax.ws.rs.core.Application ou ter uma subclasse javax.ws.rs.core.Application minimamente definida.
Sobre Esta Tarefa
A especificação JAX-RS 1.1 suporta diversas novas maneiras para configurar um aplicativo JAX-RS.É possível usar a varredura de anotação integrada para ajudar a configurar automaticamente o aplicativo. Opcionalmente, é possível incluir subclasses javax.ws.rs.core.Application no seu aplicativo e depois incluir os padrões de URL necessários usando a anotação javax.ws.rs.ApplicationPath ou uma definição de servlet web.xml. Ao usar a implementação IBM® JAX-RS, não é necessário especificar a implementação de classe do servlet porque ela é automaticamente incluída na configuração do módulo da Web quando o aplicativo JAX-RS é iniciado.
Ao usar um arquivo web.xml, você deve usar um arquivo web.xml Java Servlet 3.0.
Procedimento
- Configure o aplicativo JAX-RS com apenas um aplicativo padrão JAX-RS no arquivo web.xml. Use esse método se precisar apenas de um aplicativo JAX-RS e todas as classes de recurso estiverem localizadas após um único padrão de URL. Também é possível especificar restrições de segurança com esse método, se necessário.
- Inclua todas as suas classes de provedor e recurso JAX-RS no diretório WEB-INF/classes ou WEB-INF/lib para o seu aplicativo da Web. Não é necessário incluir uma subclasse javax.ws.rs.core.Application no seu aplicativo da Web.
- No seu arquivo web.xml, inclua uma definição de servlet com javax.ws.rs.core.Application como o nome do servlet. Não é necessário incluir uma classe de servlet.Você deve incluir um padrão de URL de servlet no arquivo web.xml. O ambiente de tempo de execução do servidor de aplicativos inclui a implementação IBM JAX-RS específica para a configuração do módulo da Web no momento em que o aplicativo JAX-RS é iniciado; por exemplo:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Os recursos JAX-RS agora estão disponíveis em uma URL como:http://{hostname}:{port}/{context_root_of_Web_ module}/{value_of_Web.xml_URL_pattern}/{value_of_@javax.ws.rs.Path}
- Configure o aplicativo JAX-RS usando a subclasse javax.ws.rs.core.Application e o arquivo web.xml. Use esse método se precisar de diversos aplicativos ou apenas de recursos específicos em determinados aplicativos JAX-RS com padrões de URL específicos. Também é possível especificar restrições de segurança com esse método, se necessário.
- Crie uma subclasse javax.ws.rs.core.Application. Nos métodos getClasses() ou getSingletons() da sua subclasse javax.ws.rs.core.Application, retorne os recursos e provedores JAX-RS relevantes.Se você retornar conjuntos vazios em ambos os métodos getClasses() e getSingletons(), todas as classes de provedor e recurso JAX-RS que estão localizadas no aplicativo são incluídas na subclasse do aplicativo JAX-RS; por exemplo:
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
Esse exemplo usa as implementações padrão dos métodos subclass getClasses() e getSingletons() de javax.ws.rs.core.Application que retornam conjuntos vazios. Portanto, todas as classes JAX-RS relevantes são consideradas como retornadas pela subclasse javax.ws.rs.core.Application.
- Inclua a subclasse javax.ws.rs.core.Application no seu aplicativo da Web.
- Inclua uma definição de servlet parcial no arquivo web.xml. O nome do servlet é o nome completo da subclasse javax.ws.rs.core.Application.Não defina a classe de servlet. Você deve incluir um padrão de URL de servlet no arquivo web.xml.O ambiente de tempo de execução do servidor de aplicativos inclui a implementação IBM JAX-RS específica para a configuração do módulo da Web no momento em que o aplicativo JAX-RS é iniciado; por exemplo:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>com.example.MyApplication</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>com.example.MyApplication</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Os recursos JAX-RS agora estão disponíveis em uma URL como:http://{hostname}:{port}/{context_root_of_Web_ module}/{value_of_Web.xml_URL_pattern_for_Application_subclass}/{value_of_@javax.ws.rs.Path}
- Configure o aplicativo JAX-RS sem um arquivo web.xml. Use esse método se não quiser usar um arquivo web.xml. Quando usar esse método, não é possível especificar restrições de segurança. Para especificar restrições de segurança, você deve usar um arquivo web.xml.
- Crie uma subclasse javax.ws.rs.core.Application. Nos métodos getClasses() ou getSingletons() da sua subclasse javax.ws.rs.core.Application, retorne os recursos e provedores JAX-RS relevantes.Se você retornar conjuntos vazios em ambos os métodos getClasses() e getSingletons(), todas as classes de provedor e recurso JAX-RS que estão localizadas no aplicativo são incluídas na subclasse do aplicativo JAX-RS; por exemplo:
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
Esse exemplo usa as implementações padrão dos métodos subclass getClasses() e getSingletons() de javax.ws.rs.core.Application que retornam conjuntos vazios. Portanto, todas as classes JAX-RS relevantes são consideradas como retornadas pela subclasse javax.ws.rs.core.Application.
- Inclua uma anotação javax.ws.rs.ApplicationPath na subclasse javax.ws.rs.core.Application. A anotação ApplicationPath é suportada com a especificação JAX-RS 1.1.O valor da anotação ApplicationPath é usado como o padrão de URL de servlet que é equivalente ao padrão de URL de servlet no arquivo web.xml; por exemplo:
package com.example;
@javax.ws.rs.ApplicationPath("rest")
public class MyApplication extends javax.ws.rs.core.Application {
}
- Inclua a subclasse javax.ws.rs.core.Application no seu aplicativo da Web. Quando o aplicativo for iniciado, os recursos estarão disponíveis na seguinte URL:
http://{hostname}:{port}/{context_root_of_Web_ module}/{value_of_@javax.ws.rs.ApplicationPath}}/{value_of_@javax.ws.rs.Path}
Resultados
Você configurou o seu aplicativo JAX-RS usando métodos suportados pelo JAX-RS 1.1 tirando vantagem da varredura de anotação para ajudar a configurar automaticamente o aplicativo.