본문 바로가기
Work/tomcat

java restful open api jersey 사용법

by 승수 2013. 12. 24.


jersey-archive-1.12.zip



자바 restful 오픈 API JERSEY 사용 방법 입니다. 



아래는 관련 사이트 정보 입니다. 


https://jersey.java.net/


사용법은 비교적 간단 합니다. 


사이트에서 라이브러리를 다운 받거나


첨부 파일의 라이브러리 추가 후


web.xml 파일에


<display-name>sample1.RestScoreBoard</display-name>

  <servlet>

    <servlet-name>ScoreRestService</servlet-name>

    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

 

    <init-param>

      <param-name >com.sun.jersey.config.property.packages</param-name>

      <param-value>com.test.restful.action.test.rest</param-value> 

    </init-param>


</servlet>

  

  <servlet-mapping>

    <servlet-name>ScoreRestService</servlet-name>

    <url-pattern>/rest/*</url-pattern>

  </servlet-mapping>



자바 엑션 파일


package com.test.restful.action.test.rest;


import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.UnsupportedEncodingException;

import java.util.List;

import java.io.BufferedReader;

import java.io.InputStreamReader;


import javax.ws.rs.GET;

import javax.ws.rs.POST;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;


import net.sf.json.JSONObject;  

import net.sf.json.JSONArray;


import java.util.ArrayList;

import java.util.HashMap;

import java.util.Map;

import java.util.Iterator;

import java.util.ResourceBundle;

import java.util.Calendar;




@Path("/misuse")

public class MisuseRestService {

@GET

@Produces(MediaType.APPLICATION_JSON) 리턴 타입은 종류가 많다

@Path("{type}/{pram}")

public String getMisuse(@PathParam("type") final String type,@PathParam("pram") final String pram) throws Exception{

StringBuffer jsonStr = new StringBuffer();


if (type.equals("IF")){ // 성능정보

jsonStr.append(insertIf(pram));

String tossSt = jsonStr.toString();

//System.out.println("=====jsonStr===="+jsonStr.toString());  

return tossSt;

}



호출시에는 web.xml에서 설정 한것 처럼 url 형태로 호출 됩니다.


http://localhost:8080/rest/misuse/IF/test


type 값이 IF


pram 값이 test 입니다.


발견된 문제 점으로는 url 형식으로 값을 전달 받기 때문에 파라메터 값에 문자열 / 같은 문자가 있으면 


경로로 인식하는 문제가 있는데 아직 해결이 안된듯 합니다. 


저 같은 경우는 우선 급한대로 문자열을 잘 사용 하지 않는 특수문자열 조합으로 


치환하여 해결 하였으나.... 빨리 해결 조치 되었으면 좋겠네요.


jersey 버전 2.x 이상 버전에서는 위에 문제가 해결 된줄 알고 버전 업을 해 보았으나 잘 안되네요


2.x 버전 사용 하실때는 web.xml에서 


설정 값이 기존 


<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 에서


<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>로 변경 됬습니다.