2016/09/07
Spring DB 연결 에러 - 01
몇 달 만에 보는 소스를 실행을 시키니 디비 연결 시에 한없이 기다리다 아래와 같은 에러를 뱉는다.
우선 개발 환경을 보자면...
개발 머신 : 맥북 (엘캐피탄)
IDE : STS
언어 : Java
프레임웍 : Spring 4+
DB Connection URL : jdbc:postgresql://localhost:5432/dbName
DB 머신 : VirtualBox Guest (Win 10)
VBox Guest 네트웍 : NAT (port forwarding TCP 127.0.0.1:5432 -> 10.0.2.15:5432)
DB : PostgreSQL 9.5
늘 그래왔던 것 처럼
잘 되던 건데 안된다... 하하하
너무 오랜만에 해보나...
특히나 예외 메세지가 마음에 안든다. null 이라니..... null 이라니!!!
답답한 마음에 PGStream 소스도 까서
org.postgresql.core.VisibleBufferdInputStream wrapped.read(buffer, endIndex, canFit) 까지 가니까 한참을 기다리다 -1을 뱉어버린다.
wrapped 변수는 InputStream 인터페이스인데 구현체를 찾기가 귀찮아서 저기까지만 봤다.
그리고 검색을 하니 Re: Locking on PGStream.ReceiveChar(PGStream.java:256)를 발견!!
하고 보니 윈도우 포트 문제 ㅠㅠ
하아.. 도대체 내가 언제 방화벽을 켜둔건가..
여튼 정답은 OS의 방화벽 문제!!
2016/05/10
JPA 2.1에서 LocalDate를 사용하는 방법
자바 8에서 마침내 새로운 Time API가 추가가 됐는데 JPA 2.1에서는 새 API를 사용할 수 없다.
이유는 자바 8이 나오기 전에 JPA 2.1이 먼저 릴리즈 됐기 때문인데...
그것 때문에 계속 기존 API를 사용하기도 답답한 노릇이라...
@Converter 애노테이션과 AttributeConverter 인터페이스를 활용해서 해결한다.
How to persist LocalDate and LocalDateTime with JPA
Java의 날짜와 시간 API
이유는 자바 8이 나오기 전에 JPA 2.1이 먼저 릴리즈 됐기 때문인데...
그것 때문에 계속 기존 API를 사용하기도 답답한 노릇이라...
@Converter 애노테이션과 AttributeConverter 인터페이스를 활용해서 해결한다.
Casting in java
instanceof를 사용한 static casting부터
class를 사용한 dynamic casting,
Generic과 Type을 활용한 dynamic casting,
java 8에서 추가된 Optional과 method reference를 활용한 casting,
Stream을 활용한 casting 까지.
Casting In Java 8 (And Beyond?)
class를 사용한 dynamic casting,
Generic과 Type을 활용한 dynamic casting,
java 8에서 추가된 Optional과 method reference를 활용한 casting,
Stream을 활용한 casting 까지.
Jackson JsonView가 작동하지 않을 때
JsonView가 작동하지 않는 상황이 발생했다.
참... 어쩜 이렇게 뭐가 안되는 상황은 죄다 한번씩 겪어 보는지..
늘 그래왔듯이 검색 그리고 해결.
Jackson JsonView not being applied
등록된 답변 보다도 답변에 추가된 Eric의 댓글이 포인트.
Good catch regarding withView() not mutating the existing config. However, objectMapper.setConfig(objectMapper.getSerializationConfig().withView(YourView.class)); works and is probably prefarable to subclassing ObjectMapper. work fine. thx.
참... 어쩜 이렇게 뭐가 안되는 상황은 죄다 한번씩 겪어 보는지..
늘 그래왔듯이 검색 그리고 해결.
등록된 답변 보다도 답변에 추가된 Eric의 댓글이 포인트.
Good catch regarding withView() not mutating the existing config. However, objectMapper.setConfig(objectMapper.getSerializationConfig().withView(YourView.class)); works and is probably prefarable to subclassing ObjectMapper. work fine. thx.
Java Map 객체의 동기화와 성능
java Map 객체의 동기화에 대한 글과 Map 종류별 성능.
ConcurrentHashMap vs. HashTable
HashMap Vs. ConcurrentHashMap Vs. SynchronizedMap – How a HashMap can be Synchronized in Java
HashTable은 동기화 구현으로 인해서 성능이 좋지 않아 사용하지 않는 것이 정석.
동기화를 고려한다면 SynchronizedMap 보다 ConcurrentHashMap을 사용하는게 성능에 도움이 된다는 내용.
두 번째 블로그를 보면 차이가 참 많이 나네.
HashTable은 동기화 구현으로 인해서 성능이 좋지 않아 사용하지 않는 것이 정석.
동기화를 고려한다면 SynchronizedMap 보다 ConcurrentHashMap을 사용하는게 성능에 도움이 된다는 내용.
두 번째 블로그를 보면 차이가 참 많이 나네.
피드 구독하기:
글 (Atom)