java restful open api jersey 사용법
자바 restful 오픈 API JERSEY 사용 방법 입니다.
아래는 관련 사이트 정보 입니다.
사용법은 비교적 간단 합니다.
사이트에서 라이브러리를 다운 받거나
첨부 파일의 라이브러리 추가 후
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>로 변경 됬습니다.