Jersey Nedir?
Açıklaması şöyle. Amaç JAX-RS API'sini gerçekleştirmek ve GlassFish içinde kullanmak. Bizim açımızdan GlassFish önemli olmadığı için sadece JAX-RS API'sini gerçekleştirmesi yeterli :)
Açıklaması şöyle.
Şöyle yaparız. Jersey + Jackson beraber indirilir.
Örnek 1 - using servlet's init param
Şöyle yaparız. Burada resource'lar yani restful sınıflar com.example dizininde. Servlet'e parametreleri jersey.config.server.provider.packages olarak geçmek sadece Jersey tarafından destekleniyor, portable değil.
Şöyle yaparız. Burada resource'lar MyApplication sınıfında
Servlet'e parametreleri javax.ws.rs.Application olarak geçmek tüm servlet'ler tarafından desteleniyor.
Örnek ver
Örnek 4 - without an explicitly-defined JAX-RS application
Örnek ver
ServletContainer - Kod
ServletContainer hem HttpServlet hem de Filter sınıflarından kalıtır. Kod ile kullanmak istersek şöyle yaparız.
Path Anotasyonu yazısına taşıdım.
@Post
Post Anotasyonu yazısına taşıdım.
@Consumes
@Produces Anotasyonu yazısına taşıdım.
Açıklaması şöyle. Amaç JAX-RS API'sini gerçekleştirmek ve GlassFish içinde kullanmak. Bizim açımızdan GlassFish önemli olmadığı için sadece JAX-RS API'sini gerçekleştirmesi yeterli :)
Dependency InjectionGoals of Jersey project can be summarized in the following points:
- Track the JAX-RS API and provide regular releases of production quality Reference Implementations that ships with GlassFish;
Açıklaması şöyle.
Jersey uses JSR 330 complient HK2 dependency injection.Kurulum
Şöyle yaparız. Jersey + Jackson beraber indirilir.
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.25.1</version>
</dependency>
ServletContainer - XMLÖrnek 1 - using servlet's init param
Şöyle yaparız. Burada resource'lar yani restful sınıflar com.example dizininde. Servlet'e parametreleri jersey.config.server.provider.packages olarak geçmek sadece Jersey tarafından destekleniyor, portable değil.
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Şöyle yaparız.<servlet>
<servlet-name>Jersey RESTful Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>rest</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
Şöyle yaparız. Burada jersey.config.server.provider.packages yanında jersey.config.server.provider.classnames değerleri de geçiliyor. Ne işe yarıyor bilmiyorum.<servlet>
<servlet-name>User Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>demo.web.ix.users</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.filter.LoggingFilter;
org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
<init-param>
<param-name>myCustomParam</param-name>
<param-value>some_value</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Multipart veri almak için şöyle yaparız."jersey.config.server.provider.classnames",
"org.glassfish.jersey.media.multipart.MultiPartFeature"
Şöyle yaparız. com.sun.jersey.config.feature.Redirect ve diğer şeylerin ne olduğunu bilmiyorum.
<init-param>
<param-name>com.sun.jersey.config.feature.Redirect</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>
<param-value>/views/</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
<param-value>/(images|css|jsp)/.*</param-value>
</init-param>
Örnek 2 - using javax.ws.rs.Application as servlet's init paramŞöyle yaparız. Burada resource'lar MyApplication sınıfında
Servlet'e parametreleri javax.ws.rs.Application olarak geçmek tüm servlet'ler tarafından desteleniyor.
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>full.qualified.name.to.MyApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Şöyle yaparız.public class MyApplication extends javax.ws.rs.core.Application {
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(ResourceA.class);
return s;
}
Örnek 3 - defining only your JAX-RS applications without any servletsÖrnek ver
Örnek 4 - without an explicitly-defined JAX-RS application
Örnek ver
ServletContainer hem HttpServlet hem de Filter sınıflarından kalıtır. Kod ile kullanmak istersek şöyle yaparız.
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.mvc.jsp.JspMvcFeature;
import org.glassfish.jersey.servlet.ServletContainer;
import org.glassfish.jersey.servlet.ServletProperties;
Filter getJerseyFilter() {
final ResourceConfig config = new ResourceConfig()
.register(new Foo())
.register(JspMvcFeature.class)
.property(ServletProperties.FILTER_FORWARD_ON_404, true);
return new ServletContainer(config);
}
@PathPath Anotasyonu yazısına taşıdım.
@Post
Post Anotasyonu yazısına taşıdım.
@Consumes
Post metodu ile veri alırken kullanılır. Şu satırları dahil ederiz.
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
Şöyle yaparız.@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
...
}
Şöyle yaparız.
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("text/html")
public Response uploadFile(
@FormDataParam("username") String username,
@FormDataParam("password") String password,
@FormDataParam("title") String title,
@FormDataParam("file") InputStream fileInputString,
@FormDataParam("file") FormDataContentDisposition fileInputDetails) {
String status = "File has been uploaded to ..."; ...
return Response.status(200).entity(status).build();
}
@Produces
Hiç yorum yok:
Yorum Gönder