검색결과 리스트
분류 전체보기에 해당되는 글 31건
- 2012.09.05 스프링 @MVC 개발환경 설정 (이클립스 Juno(4.2) + Maven + STS plugin + Tomcat7 스프링 개발환경 셋팅)
- 2012.08.22 [펌] 이클립스 톰캣에서 jndi 를 이용한 DBCP 설정
- 2012.08.21 [jQuery] $.ajax 원형 몇가지
- 2012.08.21 [jQuery] 체크 박스, 라디오 버튼 값으로 체크
- 2012.08.21 [jQuery] 콤보박스, 라디오버튼이 체크 되었는지 검사
- 2012.08.21 Check the result mapping for the 'NEXTVAL' property.
- 2012.07.03 불필요한 pagefile.sys 와 hiberfil.sys 제거
- 2012.06.21 OAuth 2.0 인증 관련 문서
- 2012.06.01 OAuth 2.0 을 이용하여 티스토리 글목록 가져오기 - #2 OAuth 인증 방법
- 2012.06.01 OAuth 2.0 을 이용하여 티스토리 글목록 가져오기 - #1 준비
글
카테고리 없음 2012. 9. 5. 09:03스프링 @MVC 개발환경 설정 (이클립스 Juno(4.2) + Maven + STS plugin + Tomcat7 스프링 개발환경 셋팅)
트랙백
댓글
글
카테고리 없음 2012. 8. 22. 19:43[펌] 이클립스 톰캣에서 jndi 를 이용한 DBCP 설정
소중한 자료의 출처는 즐건세상 님의 티스토리 입니다.
원문 : http://jhoony.tistory.com/entry/톰캣에서-jndi-를-이용한-DBCP-설정
=========================================================================================
톰캣에서 제공해주는 DBCP 를 얻어오는 방법에는 global 적인방법과 각 web application에서 설정하는 방법이 있다.
이클립스에서 톰캣 서버를 설정하게 되면 아래 그림처럼 Servers라는 프로젝트가 하나 생기게 된다. Servers라는 프로젝트에 보면 아래 그림과 같이 server.xml 도 보이고 web.xml도 보인다. 여기 있는 파일을 변경한다고 해서 톰캣에 있는 파일이 변경되지는 않는다.
■ 각 web application에서 설정
1. server.xml, web.xml 설정
위의 그림에서 server.xml 파일에서 아래와 같은 내용을 추가한다. mysql 접속용이다.
<Context docBase="DBTest" path="/DBTest" reloadable="true" source="org.eclipse.jst.j2ee.server:DBTest">
<Resource name="jdbc/mysql_board" auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/test"
username="root" password="password"
maxActive="20" maxIdle="10" maxWait="-1"
/>
다음으로 각 web application(프로젝트) 폴더의 web.xml 에 아래와 같은 내용을 추가한다.
<resource-ref>
<description>board db Test</description>
<res-ref-name>jdbc/mysql_board</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
2. context.xml 설정
각 web application(프로젝트) 폴더의 META-INF 폴더에 context.xml 파일을 생성한후
아래의 내용을 추가한다.
< ?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/mysqlLocal" auth="Container"
type="javax.sql.DataSource"
username="root" password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test" maxActive="20"/>
< /Context>
■ 전역설정
server.xml 의 <GlobalNamingResources> 엘리먼트의 자식엘리먼트로 아래의 내용을 추가한다.
<Resource name="jdbc/mysql_global" auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/test"
username="root" password="password"
maxActive="20" maxIdle="10" maxWait="-1" />
다음으로,
각 web application(프로젝트) 폴더의 META-INF 폴더에 context.xml 파일을 생성한후
아래의 내용을 추가한다.
< ?xml version="1.0" encoding="UTF-8"?>
<Context>
< ResourceLink
name="jdbc/mysql_global"
global="jdbc/mysql_global"
type="javax.sql.DataSource"
/>
< /Context>
트랙백
댓글
글
카테고리 없음 2012. 8. 21. 15:27[jQuery] $.ajax 원형 몇가지
1. form의 값으로 호출
var param = $("form[name=edit_form]").serialize();
$.blockUI({ message: "<h3><img src='/images/ajax-loader.gif'/><br/>Please wait...</h3>" });
$.ajax({
type:"POST",
url:"/xxx.jsp",
data:param,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: "text",
error:function(xhr, status, error){
alert("Ajax Error : " + error);
$.unblockUI();
},
success:function (json) {
if(json.result=="fail") {
alert(json.error);
} else {
alert("처리 하였습니다.");
document.location.reload();
}
$.unblockUI();
}
});
2. json 으로 호출
var param_value1 = ...
var param_value2 = ...
$.blockUI({ message: "<h3><img src='/admin/images/ajax-loader.gif'/><br/>Please wait...</h3>" });
$.ajax({
type:"POST",
url:"/xxx.jsp",
data:{"param_name1":param_value1,"param_name2":param_value2},
dataType:"json",
error:function(xhr, status, error){
alert("Ajax Error : " + error);
$.unblockUI();
},
success:function (json) {
if(json.result=="fail") {
alert(json.error);
$.unblockUI();
} else {
var data = json.data;
$("input[name=auth_info_auth_id]").val(authId);
$("#auth_info_span_auth_id").text(authId);
$("input[name=auth_info_app_name]").val(data.APP_NAME);
$("input[name=auth_info_auth_type]").filter("input[value="+data.AUTH_TYPE+"]").attr("checked",true);
$("input[name=auth_info_redirect_uri]").val(data.REDIRECT_URI);
$.blockUI({ message: $("#auth_info"), css: {width:$("#auth_info").width(), top:"150px"} });
}
}
});
트랙백
댓글
글
카테고리 없음 2012. 8. 21. 15:22[jQuery] 체크 박스, 라디오 버튼 값으로 체크
DB에서 가져온 값으로 이름이 동일한 체크 박스 또는 라디오 버튼을 선택 하는 방업
var checkValue = 'DB에서 가져온 값';
$("input[name=checkList]").filter("input[value='"+checkValue+"']").attr("checked",true);
트랙백
댓글
글
카테고리 없음 2012. 8. 21. 15:17[jQuery] 콤보박스, 라디오버튼이 체크 되었는지 검사
이름이 동일한 체크 박스나 레이오 버늩이 선택 되었는지 검사.
if($("input[name=check_list]:checked").size()<1) {
alert("선택된 데이터가 없습니다.\n확인 후 다시 시도해 주세요");
return;
}
트랙백
댓글
글
카테고리 없음 2012. 8. 21. 12:06Check the result mapping for the 'NEXTVAL' property.
로컬 개발 환경에서는 잘 돌아가던게
리눅스 개발 서버에 올리니 이런 애러가 발생
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in com/xxx/yyy/ABCD.xml.
--- The error occurred while applying a result map.
--- Check the nextScopeNo-AutoResultMap.
--- Check the result mapping for the 'NEXTVAL' property.
--- Cause: java.lang.NullPointerException
... 생략
해당 소스를 찾아가 보니
DAO
protected String nextXXXXNo() throws SQLException {
return (String)sqlMapper.queryForObject("selectXXXXId");
}
Query Map
<select id="selectXXXXId" resultClass="string">
SELECT SEQ_XXXX.NEXTVAL FROM DUAL
</select>
이 부분이다.
일단 시간이 없어서 결과를 HashMap 으로 반환하고 DAO에서 HashMap에서 뽑아서 String로 캐스팅 하도록 변경해서 적용했는데...
Exception 을 자세히 살펴 보니 아래 부분에
Caused by: java.lang.NullPointerException
at oracle.sql.LnxLibThin.lnxnuc(LnxLibThin.java:5744)
at oracle.sql.NUMBER.toText(NUMBER.java:2664)
at oracle.jdbc.driver.OracleStatement.getStringValue(OracleStatement.java:3531)
at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:434)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1482)
NUMBER 타입을 String로 캐스팅 하다가 문제가 생긴것이 정확한 원인인 듯
아마도 로컬개발 환경과 개발서버의 환경이 Oracle JDBC 드라이버 차이인듯
두가지 해결 방법
Query Map의 resultClass 를 숫자 타입으로 바꾸거나
쿼리 자체에서 TO_CHAR로 문자로 바꾸어 버리거나.
예전 경험상 전자는 또 int로는 해결이 안되고 long나 BigDecimal 타입으로 사용 해야 하는 번거로움이 있어서
<select id="selectXXXXId" resultClass="string">
SELECT TO_CHAR(SEQ_XXXX.NEXTVAL) AS NEXT_ID FROM DUAL
</select>
이런 식으로 변경 적용 완료.
트랙백
댓글
글
카테고리 없음 2012. 7. 3. 13:58불필요한 pagefile.sys 와 hiberfil.sys 제거
pagefile.sys
내컴퓨터 > 속성 > 고급 시스템 설정 > 고급 텝 > 성능 [설정] 클릭 > 가상 메모리 [변경] 클릭
모든 드라이브에 대한 페이징 파일 크기 자동 관리 체크 해제 후
자신의 시스템이 메모리 2G 이하 이면 사용자 지정 크기
처음 크기 512 입력
최대 크기 1024 입력
메모리 3G 이상 이면
페이징 파일 없음 체크 후
[설정] 클릭
윈도우 재시작 후 pagefile.sys 삭제된것 확인
hiberfil.sys
cmd 실행
커맨드 라인에서 powercfg -h off
참고 활성화 시 powercfg -h on
hiberfil.sys 제거 확인
트랙백
댓글
글
카테고리 없음 2012. 6. 21. 10:12OAuth 2.0 인증 관련 문서
ietf OAuth 2.0 스펙 문서 - 드레프트 28 : http://tools.ietf.org/html/draft-ietf-oauth-v2-28
페이스북 인증 관련 문서 : http://developers.facebook.com/docs/authentication/
구글 OAuth 2.0 관련 문서 : https://developers.google.com/accounts/docs/OAuth2?hl=ko-KR
트랙백
댓글
글
카테고리 없음 2012. 6. 1. 17:51OAuth 2.0 을 이용하여 티스토리 글목록 가져오기 - #2 OAuth 인증 방법
1. authorization code 발급 받기
티스토리의 경우 OAuth 인증 URL이 https://www.tistory.com/oauth/authorize/ 입니다.
해당 페이지로
client_id : 컨슈머 등록시 발급받은 id
redirect_url : 인증 후 결과를 돌려 받을 웹어플리케이션 URL
code : 'code'
세가지 파라메터를 넘겨주면 인증 완료 후 redirect_url로 지정한 페이지로 code(authorization code)를 넘겨 줍니다.
트랙백
댓글
글
카테고리 없음 2012. 6. 1. 16:25OAuth 2.0 을 이용하여 티스토리 글목록 가져오기 - #1 준비
0. 프롤로그
새로 시작한 프로잭트가 모사의 클라우드서비스 OpenAPI 프로잭트에서 OAuth 2.0 인증 모듈 구현을 담당하게 되었습니다.
현재 OAuth 2.0 인증은 아직 드레프트 단계이고 1.0과 전혀 호환이 되지 않는 문제가 있습니다.
서버 모듈을 개발하기 위해서 우선 작동하는 방식을 알고자 간단한 클라이언트를 앱을 구현해 보기로 했습니다.
우선 OAuth 2.0 인증을 지원하는 서비스는 facebook이 대표적이고 포스퀘어 등 외국 서비스는 몇개 있지만 영어가 약해서... ^^a
국내 서비스중 티스토리가 OAuth 2.0 인증을 지원합니다.(외에도 몇개 있는것 같지만...)
처음부터 애먹었던게 티스토리가 기존회원 초청제로 회원 가입을 받기에 초대장 준다는 글에 열심히 코맨트를 달아 보았지만... 경쟁률이 ㅎㄷㄷㄷ
하루동안 삽질하다 모 커뮤니티 자유게시판에 요청글을 올리니 바로 초청장이 날라오네요...
글 올리자 마자 바로 초정장을 보내주신 바른숲님께 다시한번 감사의 말씀을 드립니다.
일단 구현해본 샘플은 티스토리의 글목록을 가져와서 보여주는 간단한 프로그램을 JSP로 구현해 보았습니다.
샘플이기에 디자인이나 인터페이스는 참 구리지만 방식을 이해하는데는 도움이 될 거라 생각합니다.
작업을 전체적으로 다시 한번 정리하고 저와 같은 작업을 해야 하는 사람에게 도움이 되고자 작업 했던 순서를 정리했습니다.
1. 티스토리 Consumer 등록
OAuth에서 Consumer란 Service Provider의 기능을 사용하려는 어플리케이션이나 웹 서비스를 뜻 합니다. 여기서 ServiceProvider는 티스토리 서비스가 되고 Consumer는 개발 하게될 웹어플리케이션이 됩니다.
티스토리 로그인 후 좌측 하단 메뉴 '티스토리 오픈API'를 클릭하고 '인증가이드' 텝에 'Consumer 등록'을 누르면 아래와 같은 화면을 볼 수 있습니다.
서비스명, 설명, 로고등은 원하는 제목을 넣으면 되고, 서비스 URL은 내가 작성할 웹서비스의 주소를 넣어주면 됩니다.
실제 작동방식이 브라우저에서 redirect 되는 방식이기 때문에 꼭 정식도메인이 아니어도 localhost 나 hosts 파일에 등록된 임시 도메인으도 얼마든지 가능합니다.
CallBack 경로는 OAuth 인증 완료후 Redirect 될 어플리케이션의 주소를 적어주면 됩니다.
저의 경우 서비스 URL은 http://localhost/,
서비스형태는 웹서비스
서비스 권한은 읽기전용
CallBack 경로는 http://localhost/tistoryOAuthResponse.jsp 라고 입력했습니다.(물론 아직 만들어지지 않은 프로그램)
Consumer 등록엔 별다른 검증과정이 없는 듯... 바로 등록 완료
Consumer관리를 들어가면 등록한 서비스명 목록이 있고 상세보기를 클릭하면 등록된 내용을 수정하거나 삭제 할 수 있는 화면이 나옵니다.
2. JSP개발환경 준비
JSP를 실행 할 수 있는 환경
본인의 경우 JDK 1.6, Tomcat 6.0, Eclipse Helios R2 + Tomcat 플러그인
이렇게 준비해습니다.
RECENT COMMENT