2013-07-29 92 views
8

任何人都可以告訴我如何使用澤西2.0不使用maven製作一個寧靜的web服務。我到處搜索,發現了Jersey1.x版本的教程,但不是2.0版本。請幫助靜默web服務與球衣2.0沒有maven

+0

什麼構建工具你想使用? – 2013-07-29 12:05:00

+1

我只使用eclipse – user2629427

+0

Eclipse是一個IDE,而不是一個構建工具。如果你不想使用Maven,你可能使用Ant或者Gradle,......你使用了哪些? Eclipse *使用哪些? – 2013-07-29 12:13:27

回答

1

我找到了答案

package com.hellowebservice; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("/hello") 
public class Hello { 

@GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String sayPlainTextHello() { 
    return "Hello Jersey"; 
    } 

    // This method is called if XML is request 
    @GET 
    @Produces(MediaType.TEXT_XML) 
    public String sayXMLHello() { 
    return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>"; 
    } 

    // This method is called if HTML is request 
    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String sayHtmlHello() { 
    return "<html> " + "<title>" + "Hello Jersey" + "</title>" 
     + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> "; 
    } 

} 

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <web-app id="WebApp_ID" version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <display-name>FirstRestWebService</display-name> 
    <servlet> 
    <display-name>Rest Servlet</display-name> 
    <servlet-name>RestServlet</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
      <param-value>com.hellowebservice.MyApplication</param-value> 
      </init-param> 
      <load-on-startup>1</load-on-startup> 
     </servlet> 
    <servlet-mapping> 
    <servlet-name>RestServlet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

MyApplication.java

package com.hellowebservice; 
    import org.glassfish.jersey.server.ResourceConfig; 


    public class MyApplication extends ResourceConfig { 
     public MyApplication() { 
      packages("com.hellowebservice"); 
    } 
    } 

運行與本地主機:8080/FirstRestWebService/REST /你好

+2

包含的JAR是什麼?你是否設法返回複雜的對象而不是字符串? –

+1

我試過了這個例子,但是當我打它說的URL「HTTP狀態404 -/FirstRestWebService /休息你好/」 – Chetan

+0

你能澄清PLS,什麼運行帶有「本地主機......」在哪裏啓動服務器意味着什麼?主要方法在哪裏? – Gobliins

1

只是添加到以前的答案。如果您不使用Maven,只是使用Eclipse與Dynamic Web Project一起構建並部署到像Tomcat這樣的Web應用程序服務器。

只需下載Jersey JAX-RS 2.0 RI軟件包Jersey Downloads,解壓並將lib,api和ext文件夾中的所有jar添加到您的構建路徑。 (我嘗試沒有ext罐子,但在啓動服務器時沒有發現classnotfound)。

還將所有jar添加到動態Web項目的部署程序集中,以便在部署到Web應用程序服務器時將它們自動複製到WEB-INF/lib目錄中。在上面的答案中,與代碼& web.xml一起,您應該有一個使用Jersey 2並運行的RESTful api。

1

我們根據用戶回答user2629427提供詳細answere。我們檢查這在Windows 7

要求:(括號表示此示例測試版)

  • Tomcat的(8拉鍊版本)
  • 球衣(2.X)

解壓縮tomcat &在tomcat的'webapps'文件夾中創建一個以下文件夾結構(文件夾名稱區分大小寫)。

abc 
    |___ WEB-INF 
     |____ classes 
     |____ lib 

把 'Hello.java' 和 'MyApplication.java' 到 '類' 文件​​夾和 'web.xml中' 到 'WEB-INF' 文件夾。

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    id="WebApp_ID" 
    version="3.1"> 

    <servlet> 
     <servlet-name>rest</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>javax.ws.rs.Application</param-name> 
      <param-value>com.king.MyApplication</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>rest</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Myapplication.java

package com.king; 

import org.glassfish.jersey.server.ResourceConfig; 

public class MyApplication extends ResourceConfig { 
    public MyApplication() { 
     packages("com.king"); 
    } 
} 

Hello.java

package com.king; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("/hello") 
public class Hello { 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String sayPlainTextHello() { 
     return "Hello Jersey"; 
    } 

    // This method is called if XML is request 
    @GET 
    @Produces(MediaType.TEXT_XML) 
    public String sayXMLHello() { 
     return "<?xml version=\"1.0\"?><hello>Hello Jersey</hello>"; 
    } 

    // This method is called if HTML is request 
    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String sayHtmlHello() { 
     return "<html><title>Hi Jersey</title><body><h1>Hello Jersey this is laksys</body></h1></html>"; 
    } 
} 

解壓的球衣和API,分機和lib複製所有jar文件(不文件夾)到您的應用程序的'lib'文件夾中。

現在使用編譯兩個java文件下面的命令

D:\apache-tc-8\webapps\abc\WEB-INF\classes>javac -d . -cp ..\lib\javax.ws.rs-api-2.0.1.jar;..\lib\jersey-server.jar;..\l ib\jersey-common.jar *.java 

下運行Tomcat服務器

D:\apache-tc-8\bin>startup 

在瀏覽器地址欄中輸入:http://localhost:8080/abc/rest/hello

相關問題