목록Java (38)
진이의 Developer Story
스프링 부트가 많이 쓰임에 따라, 내장된 톰캣을 많이 사용하고 있다. 기존에는 톰캣을 따로 다운받아서, server.xml 등을 수정하여 톰캣을 사용했지만, 스프링 부트에서 제공을 하는 내장 톰캣의 경우 application.yml 이나 properties를 통하여 설정하거나 java 코드로 설정(ajp 등)하여 사용한다. 그런데 외부 톰캣을 사용할 경우, Project > Build Automatically 체크 후 server.xml 에서 reloadable만 false로 해주면 간단하게 Hot swapping이 되어, 메소드를 추가, 제거, 기타 ORM을 사용하여 쿼리를 작성하는 부분외에는 재시작없이 수정된 코드를 바로 확인해볼 수 있었다. 스프링 부트는 이번이 써보는 것이 두 번째인데, 저번에는 ..
포워드IP의 경우 제대로 걸러지지 않는 경우가 있다. 헤더에서 구분하여 IP값을 받아오자. public static String getClientIP() { HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest(); String ip = request.getHeader("X-FORWARDED-FOR"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.len..
저번에 만들어두었던 별풍선 수집기에 문제가 있음은 진작에 알고 있었다.잘못된 네티의 사용방법, 설계상의 문제로 하루에 한번은 재시작을 해주어야 했는데...이번에 다시 한번 새로 설계하여 제작해봤다. 한번도 사용해보지 않은 스프링 부트를 사용하며, 지금까지 스프링에 대한 이해가 얼마나 부족한지도 깨닫게 되더라.아무래도 웹어플리케이션이 아니다 보니, 스코프에 대한 이해가 부족하여 의존성 주입이 안되는다던지 등... 새롭게 공부를 한 느낌이 든다. 네티는 이번이 2번째 사용이다보니 저번보다 훨씬 수월하게 코딩이 되었다.아래는 스프링부트로 만들어본 새로운 버전의 수집기. 며칠돌려보고 에러가 없다면 좋을것 같지만...재부팅없이 며칠을 버텨줄지 모르겠다.
해결방법 1. XML에서 JobDetailBean을 만들때, jobDataAsMap 프로퍼티에서 Service 객체를 등록한다. context-scheduler.xml BatchJob.java public class BatchJob extends QuartzJobBean { /** * Logger */ private static final Logger LOGGER = LoggerFactory.getLogger(BatchJob.class); /** * BatchService */ private BatchService batchService; public void setBatchService(BatchService batchService) { this.batchService = batchService; } ..
개발환경 : 윈도우 10운영환경 : CentOS 5.5개발언어 : JAVA, MARIADB사용된 라이브러리1. Maven2. Netty all in one V 4.1.63. Apache Commons DBUtils 외 DB관련 라이브러리4. Google Guava5. Jackson개발기간 : 일주일정도 별풍선 및 초콜릿 선물, 강제퇴장, 닉네임변경 등을 모니터링합니다.모니터링을 희망하는 bj아이디를 적어두면 로그를 수집할 수 있습니다.(현재는 베스트BJ 300명을 수집중...) TODO LIST1. 패킷이 연속으로 이어져서 오는 경우 파싱이 안되는 문제 수정 (해결완료)2. 메모리 최적화 (진행중)-> 이거는 아마 며칠 켜놓고 모니터링 해야할 것 같습니다~~~3. 채팅로그 수집시 한글 깨짐 문제 수정 (..
아파치 재단에서 만든 commons 프로젝트가 가장 많이 알려지지 않았을까 싶다.commons-io, commons-lang, commons-dbutils 등... 1. commons-ioI/O(입출력)에 관한 라이브러리 2. commons-lang자바 lang 패키지를 확장시켜 만든 라이브러리 3. commons-dbutilsjdbc사용에 도움을 주는 라이브러리.-> 간단한 DB작업이 필요할 때, mybatis나 하이버네이트를 대체하여 사용하기 편하다. 4. commons-net네트워크 관련 프로토콜을 제공한다. 가장 많이 쓰이는건 commons-io와 commons-lang이 아닐까 싶다! 그외에 구글에서 만든 유용한 라이브러리들이 있다. 1. java-guava구글이 작성한 오픈소스 라이브러리.컬렉..
String originalStr = "Å×½ºÆ®"; // 테스트 String[] charSet = { "utf-8", "euc-kr", "ksc5601", "iso-8859-1", "x-windows-949" }; for (int i = 0; i < charSet.length; i++) { for (int j = 0; j < charSet.length; j++) { try { System.out.println("[" + charSet[i] + "," + charSet[j] + "] = " + new String(originalStr.getBytes(charSet[i]), charSet[j])); } catch (UnsupportedEncodingException e) { e.printStackTrac..
기억이 새록새록납니다.이 시절에는 스프링을 제대로 접해보지 못하고 무작정 만들었던 기억이 나네요. 트랜잭션 처리도 어설프게 설정이 되었고, 허술투점의 프로젝트였죠. 지금 생각해보면 나름 디자인쪽에 신경쓴다고 많이 신경썼었던 것 같네요.=> 알맹이 생각은 못하고 껍데기만 치중했던 것 같습니다. 다시 만든다면 제대로 만들 자신은 있지만...디자인을 다시 할 생각을 하니 항상 접어두게만 되네요... 그 당시 만들었던 프로젝트 사진을 투척해봅니다. 허접하기 그지없네요~ㅋㅋ 마지막으로 이런 프로젝트를 준비하고 계신분들께 한마디 하고 싶다면, 테스트주도 개발을 하셨으면 좋겠어요. 생각보다 프로젝트 규모가 크더라구요...대충 설계하고 만들다가는 중간에 포기하기 쉽습니다... DB는 라이엇에서 제공해주는 DTO 대로 ..
@ControllerAdvice public class HTTPErrorHandler { @ExceptionHandler(NoHandlerFoundException.class) public String httpError404() { return "/common/exception/pageNotFound"; } } 위와 같이 컨트롤러를 만들어준다. @ControllerAdvice 어노테이션을 사용한다. (Spring 4.0 이상에서 사용가능) 만약에 4.0 이하라면 web.xml에서 error-list 를 이용하여 처리해야 한다. 해당 방법은 다음 포스팅때 적도록 하겠다. 아래는 web.xml 설정방법이다. spring org.springframework.web.servlet.DispatcherServlet..
심각: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/]] at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at org.apache.catalina.core.ContainerBase.startInternal(..