Computing/Programming2009/04/01 16:42
이클립스에서 JNDI(Java Naming and Directory Interface) 연결 설정 시 나오는 다음과 같은 워닝에 대한 대처법이다.

CHKJ4019W: Invalid res-sharing-scope; valid values are "Shareable" or "Unshareable".

이는 이클립스 웹 프로젝트의 WEB-INF 폴더의 'web.xml' 파일에 다음과 같이 JNDI 연결 설정을 추가하였을 때 발생한다.

<resource-ref>
    <res-ref-name>jdbc/oracle</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>       
</resource-ref>

<resource-ref> 엘리먼트 내부에 다음 엘리먼트를 추가해주면 워닝은 사라진다.

<res-sharing-scope>Shareable</res-sharing-scope>

워닝에서 유추할 수 있듯이 <res-sharing-scope> 엘리먼트의 바디에는 'Shareable' 혹은 'Unshareable' 둘 중의 하나만 들어갈 수 있다.

이 워닝이 발생하는 이유는 명확하지 않다. 워닝의 내용은 <res-sharing-scope> 엘리먼트 바디에 유효하지 않은 값이 있다고 하는 것인데, 이것이 어떻게해서 그 엘리먼트가 존재하지도 않는데도 발생하는지 의문이다. 혹, 그 엘리먼트가 필수적으로 삽입되게 하거나, 혹은 삽입을 권장하려 한 것은 아닌가 문득 생각이 들지만, 그러려면 그런 내용을 지닌 에러 혹은 워닝을 냈어야 하는게 아닌가 한다. 아무튼 저 워닝이 발생하게 되는 명확한 이유는 알지 못하더라도, <res-sharing-scope> 엘리먼트의 의미는 다음의 문단에서 파악할 수 있지 않을까 한다.

The bean provider can control the extent that connections are shared. By default, other enterprise beans in the application that use the same resource in the same transaction context can share the connection. The bean provider can set the res-sharing-scope deployment descriptor element to Unshareable to indicate that a connection not be shared. Keep in mind, though, that sharing connections to a resource manager allows the container to optimize connection and local transaction use. It is recommended that connections be marked Shareable.

위 문단은 "Designing Enterprise Applications with the J2EE Platform, Second Edition"라는 책에서 인용한 것이다.

* 참고
- http://younghoe.info/tag/CHKJ4019W
- http://fallacy.tistory.com/212
Posted by pcandme

TRACKBACK http://pcandme.net/trackback/55 관련글 쓰기

댓글을 달아 주세요

Computing/Programming2009/03/16 17:06
Java 6로 프로그래밍 시, 컴파일러에서 다음과 같은 워닝을 낼 때의 조치법이다.

Type safety: Unchecked cast from Object to ~~~

물결 표시가 들어간 자리에는 'ArrayList'와 같은 자바 컬렉션 프레임워크의 멤버가 들어간다.

워닝이 나는 라인 바로 위에 다음과 같은 어노테이션을 삽입한다.

@SuppressWarnings("unchecked")

위 어노테이션은 경고 억제 어노테이션으로, 비확인 경고(unchecked warning)을 제거해 준다. 구글링한 결과, 위 워닝은 실행에 아무런 영향을 미치지 않으며, 대부분의 자바 프로그래머들이 '무시해도 좋은' 워닝으로 생각하는 것으로 결론 지었다.

본인의 경우, Object 클래스 객체를 ArrayList<String> 객체로 형변환하려다 위와 같은 비확인 경고를 발생시키게 되어 위 어노테이션으로 해결하였지만, 그 외의 다른 비확인 경고에도 유효할 것으로 생각된다.

참고가 될까 하여, Java 5부터 도입된 어노테이션에 관한 링크를 걸어둔다. 당 페이지에 위 어노테이션에 관한 정보도 찾을 수 있다.

http://java.sun.com/docs/books/tutorial/java/javaOO/annotations.html

Posted by pcandme

TRACKBACK http://pcandme.net/trackback/51 관련글 쓰기

댓글을 달아 주세요

Computing/Programming2009/03/12 11:01
이클립스 Java EE 프로젝트에서 다음과 같은 워닝이 뜰 때의 조치법이다.

Classpath entry /path/to/tomcat/common/lib/servlet-api.jar will not be exported or published. Runtime ClassNotFoundExceptions may result.

위는 리눅스 환경에서의 워닝 메시지이며, 위에서 '/path/to/tomcat/common/lib/servlet-api.jar' 부분은 시스템에 따라 다르다.

이 워닝을 제거하는 방법은, 프로젝트 탐색기(Project Explorer)에서 해당 프로젝트의 속성(Properties) 창을 연 후, 'Java EE Module Dependencies' 항목에서 해당 JAR/Module의 체크 박스를 체크인 해주거나, 존재하지 않는다면 옆에 추가(Add) 버튼을 눌러 추가하면 된다. 즉, 위와 같은 경우는 아래와 같이 하면 된다.

사용자 삽입 이미지
참고로, 위 버튼 중 삭제(Delete) 버튼이 없는 것을 알 수 있는데, 체크박스에 체크아웃을 한 후, 적용(Apply) 버튼을 누르면 자동으로 삭제되는 식으로, 다른 것들과 인터페이스가 사뭇 다르다. 위에 있는 JAR은 JSP/서블릿 컨테이너로 톰캣 서버가 설정되면 자동으로 추가되는 것으로, 체크아웃을 해도 삭제되지는 않는다. 사용자가 추가한 JAR/Module은 앞서 말한 방식으로 삭제가 된다.
Posted by pcandme

TRACKBACK http://pcandme.net/trackback/50 관련글 쓰기

댓글을 달아 주세요