Java For All 썸네일형 리스트형 MQTT #1 메시지 송신 c:\Program Files\mosquitto>mosquitto_pub.exe -h 192.168.0.111 -t pb/A00000280FB125 -m "{\"type\":\"010\", \"contents\", \"일반공지내용입니다\"}" 메시지 수신 c:\Program Files\mosquitto>mosquitto_sub.exe -h 192.168.0.111 -t pb/A00000280FB125 더보기 제우스 어드민 사용예 jeusadmin JEUS administration tool Usage: jeusadmin [-h] [-version] [-fullversion] [-buildversion] [-licensedue] [-licenseinfo] [-verbose] [-jmx-connector jmx_connector_name] [nodename] [-U] [-P] [-f] [command] [command_option] arguments: -h: show this usage or show command help -h help [options] [command]: show command help -version: show version -fullversion: show full version -buildversion: s.. 더보기 Out Of Memory out of memory 사 내에서 하는 프로젝트의 일환으로 Java의 성능 이슈에 대한 다양한 컨텐츠를 작성 중인데... 그 중 유용하다고 생각되는 내용 일부를 블로그를 통해서 공개할 생각이다. 그 첫번째 내용으로 악명높은 Out Of Memory Error, 흔히 OOM(E)라고 부르는 현상의 원인과 해결책에 대해 정리한 문서를 소개한다... OOME 개요 JVM이 일정한 크기의 메모리를 할당하는데 실패하면 Out Of Memory Error, 이른바 OOME가 발생한다. OOME의 발생 원인은 매우 다양하며, 이는 JVM이 사용하는 메모리 공간의 다양성에 기인한다. 대부분의 JVM은그 사용 용도에 따라 메모리를 몇가지 종류로 구분해서 사용한다. 가령 Sun HotSpot JVM은 다음과 같은 세 가.. 더보기 Heap 여유 공간이 충분한데도 OOME(OutOfMemoryException)이 발생한다? 간혹 Heap의 여유 공간이 충분한데도 OutOfMemory Error가 나는 경우가 있다. 이러한 상황을 이해하려면 Java Application이 사용하는 메모리가 여러 영역으로 나뉜다는 사실을 이해해야 한다. Java Application이 사용하는 메모리 영역은 보통 다음과 같이 분류된다. - Permanent Space: Class 정보를 저장 - Java Heap: Object 정보를 저장 - Native Heap: JNI, Thread Stack, 기타 Native 정보를 저장 우리가 흔히 접하는 Memory 문제는 대부분 Java Heap에서 발생한다. Java Application이 할당하는 오브젝트들이 Java Heap에 거주하기 때문에 가장 많은 메모리를 필요로 하기 때문이다. 하지만.. 더보기 jconsole 의 원격접속 허용 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1403 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 더보기 Eclipse Test and Performance Tools Platform (TPTP) 정리는 향후에 ;;; export TPTP_AC_HOME="/opt/tptp/agntctrl/linux_ia32" export JAVA_PROFILER_HOME="$TPTP_AC_HOME/plugins/org.eclipse.tptp.javaprofiler" export LD_LIBRARY_PATH=$JAVA_PROFILER_HOME:$TPTP_AC_HOME/lib:$TPTP_AC_HOME/bin:$LD_LIBRARY_PATH More details on using the profiler agent To debug a performance issue and to see where an application is spending most of its time, one might pick the followi.. 더보기 SVN Merge 요즘 많이 사용하는 SVN Merge 방법 알기 쉽게 설명한 포스팅이 있어서 링크합니다. 출처: http://www.eahn.kr/wp/?p=502 eclipse에서 svn을 사용하면서 tag는 개념적으로 간단해서 빌드시 사용하고 있으나, 브랜치 사용은 어려워하는 분들을 위해 간단히 요약을 합니다. 1. 먼저 브랜치를 하나 만듭니다. 현재 프로젝트에서 브랜치를 하나 생성합니다. 브랜치 이름을 지정합니다. 2. 브랜치를 만들었으면, 브랜치 설정을 추가합니다. 안해도 되나, 브랜치가 많은 경우 사용편의상 필요합니다. 1.에서 생성한 브랜치에서 마우스 오른쪽 버튼으로 추가(add branch)합니다. 아래의 브랜치목록에 새롭게 추가된것을 볼 수 있습니다. 3. 브랜치에서 변경된 내용을 trunk에 적용하기 위.. 더보기 Maven WebApp 프로젝트를 Eclipse 에서 실행하기 1) .classpath 파일에 다음 라인 추가하기 위의 라인을 다음처럼 수정하기 2) org.eclipse.wst.common.component 추가 혹은 수정하기 위의 {프로젝트이름}은 빈 문자없이 소문자로 입력하면 된다. 3) org.eclipse.wst.common.project.facet.core.xml 파일을 수정하기 ... 더보기 유용한 eclipse 플러그인 1. Grep Console 참조) http://marian.musgit.com/grepconsole/index.html 2. Maven Integration for Eclipse 참조) http://www.sonatype.com/sonatype-professional---m2eclipse.html 3. Spring IDE 4. Subverisve (OR Subclipse) 참조) Subclipse> http://subclipse.tigris.org/ 5. Properties Editor --------------------------------- 이클립스 주노에서 새로 나온 플러그인 Code Recommender에 대해 말해보도록 하겠습니다. Code Recommender 는 자동완성 추천 기능입니다... 더보기 Eclipse tips and tricks Remote debugging:The eclipse IDE can remote debug your web application. Imagine being able to debug your development server from your local machine. Eclipse can help you do this. First you need to instruct your application / server to listen on a port for debug messages. That can be done using the -Xdebug flag java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8787,suspend=n This tells .. 더보기 Maven : pom.xml에서 민감한 데이터 감추기 보안을 위해 서버 패스워드 같은 민감한 데이터를 pom.xml에서 감추는 방법. 1. 사용되는 부분을 프로퍼티로 처리하고 mvn 실행시 -D옵션으로 값을 넘겨준다. mvn deploy -Dwasserver.password=xxx (그러나 허드슨 사용 환경에서 허드슨 빌드 console 화면에 데이터가 노출되는 문제가 있다) 2. 감추려는 데이터가 서버 접속 정보라면 settings.xml에 서버정보를 설정하여 pom.xml에서 데이터를 감출수 있다. server001 my_login my_password ${user.home}/.ssh/id_dsa some_passphrase 664 775 ... 참조사이트> http://ecogeo.tistory.com/80 더보기 현재 메소드명/함수명 알아내기 Get the current method name http://www.rgagnon.com/javadetails/java-0420.html 개발하다 보면 현재 함수나 메소드명을 출력하고 싶은 경우가 있다. 물론 함수 안에서 일일이 함수명을 적어서 출력하거나 할 수도 있지만, 그렇게 하는 방법은 그리 좋은 방법이 못된다. Java 같은 경우에는 주로 StackTrace의 정보를 이용해서 구한다. 1.4에서는 다음과 같은 코드로 현재 메소드명을 구한다. new Exception().getStackTrace()[0].getMethodName() Java 1.5 버전에서는 현재 메소드의 정보가 담긴 StackTrace 정보가 약간 바뀌었는지 현재 메소드명 구하는 방법도 바뀌었다. 하지만 이 방법은 new Exc.. 더보기 자바로 오라클 프로시저 만들기 자바 클래스에 유용한 메소드들 만들어서 오라클에 심어놓고(function.procedure처럼) SQL문에서 함수호출한다. procdure를 써야겠지만. 이것도 괜찮은 방법인것 같다.. 이름하여 Java Stored Procedure.... * 작업순서 1. 자바코드작성 2. 바이트코드로 컴파일 3. Databae로 Load --- ? 4. Call Specification 작성 ---? 5. Call Specification을 통함 자바 함수 실행 간단예제A 1.자바코드작성 class SayHello { public static void main(String[] args){ System.out.println(say(args[0])); } public static String say(String name.. 더보기 오라클에서 자바 오브젝트 사용 - 펑션 호출(IN/OUT, 패키지 임포트 테스트) 1. 자바 소스 생성 & 컴파일 import emp.*; import java.sql.*; public class EmpName { public static String getEname(int empno) throws SQLException { String ename = Ename.getEname(empno); return ename; } }; 2. 자바 소스 로드 loadjava -u scott/tiger@localhost:1521:ORCL -v -r -t EmpName.java 3. 자바 클래스를 호출하는 펑션 생성 CREATE OR REPLACE FUNCTION FN_EMP_NAME ( IN_EMPNO NUMBER ) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'EmpNam.. 더보기 스토어드 프로시저/함수를 자바로 작성하는 법 스토어드 프로시저/함수를 자바로 작성하는 법 OS: Microsoft Windows 2000 [Version 5.00.2195] DBMS: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production 작성자: 강명규 작성일: 2004-04-17 이 글은 Oracle and Java Stored Porcedures(www.developer.com/db/article.php/3337411)을 정리한 것임. 이 글에 나오는 예제또한 약간의 첨삭이 있지만, 원문에 충실히 할 것임. 오라클에서 stored procedure/function은 전통적으로 PL/SQL로 작성했었다. 사실, Native언어(C언어등 OS상에서 실행파일을 얻는)나 자바로도 가능하다. 특이하게 .. 더보기 토드 커넥션 유지 지금 개발하고 있는 DB 세션 유지 시간이 너무 짧아서 코딩하다가 쿼리 한 번 날리려면 다시 로그인 하는완전히 귀찮은 상황이었는데, 또 우리의 구글신께서 알려주셨습니다. 사용하고 있는 버전은 9.7.2.5 입니다. Session Browser를 열면 아래와 같이 Refresh Time을 설정할 수 있습니다. 이제 Session Browser를 닫지 않고 Editor에서 쿼리 날리면 됩니다. 지긋지긋한 Session 끊김 문제가 이렇게 해결되었습니다. \(^o^)/ 단, 다른 버전에서는 Session Browser가 DBA메뉴 아래에 있을 수도 있습니다. [참고 : http://qzkml3.springnote.com/pages/4846577 ] 참고> http://zommoc.tistory.com/147 더보기 필수 Eclipse Plugins 1) m2e update: http://m2eclipse.sonatype.org/sites/m2e download: 2) moreUnit update: http://moreunit.sourceforge.net/update-site/ download: http://sourceforge.net/projects/moreunit 3) Propedit update: http://propedit.sourceforge.jp/eclipse/updates/ download: - 4) Log4e update: http://log4e.jayefem.de/update download: http://log4e.jayefem.de/download/eclipse3/de.jayefem.log4e_free_1.3.3.zip *) iB.. 더보기 Eclipse 3.6 (Helios) Publish이 오래 걸리는 문제 1. wtp 3.2.1 버전을 다운로드 한다. (http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/drops/R3.2.1/R-3.2.1-20100730021206/wtp-R-3.2.1-20100730021206.zip&url=http://ftp.kaist.ac.kr/eclipse/webtools/downloads/drops/R3.2.1/R-3.2.1-20100730021206/wtp-R-3.2.1-20100730021206.zip&mirror_id=466) 2. eclipse 가 실행중이라면 닫는다. 3. eclipse/eclipse.ini 를 에디터로 열어 끝에 다음과 같은 내용을 추가한다. -clean -debug 4. 다운.. 더보기 iBator ibator 란 아파치 재단에서 만든 데이터맵핑 프레임워크인 iBatis 를 위한 소스 생성 툴 생성 소스 (테이블 단위로 기본적인 insert,update,delete,select 관련소스) SqlMap XML Files Java Classes to match the primary key and fields of the table DAO Classes 사이트 http://Ibatis.apache.org/ibator.html Eclipse Plugin 설치 환경 Eclipse 3.4.1 or higher JDK 5.0 or Higher Eclipse plugin 설치 Take the "Help>install new software..." Menu Option Press the "Add" button En.. 더보기 configuration reloading org.apache.commons.configuration.AbstractFileConfiguration.FileChangedReloadingStrategy org.apache.commons.configuration.reloading.FileChangedReloadingStrategy props = new PropertiesConfiguration(CONFIG_NAME); props.setReloadingStrategy(new FileChangedReloadingStrategy()); [출처] java.util.Properties 클래스|작성자 hq606fas 더보기 struts2 Action 설정하기 web.xml 이 파일이 웹 애플리케이션의 배치스크립터(DD) 라는건 다 알고 있는 사실입니다. Struts2가 요청을 받아들일 수 있도록 DD에 필터를 등록해야 합니다. struts org.apache.struts2.dispatcher.FilterDispatcher struts /* struts-default.xml 이 파일의 위치는 프레임워크 코어 라이브러리인 struts2-core-버전.jar 안에 포함되어 있습니다. 즉 사용자가 작성해야 하는 파일이 아니고 미리 정의되어 있는 파일입니다. 그렇다면 왜 이 파일을 여기서 언급 하는 걸까요? 그 이유는 사용자가 작성해야 할 struts.xml 파일의 설정을 상당히 줄일 수 있도록 모든 디폴트 값들이 설정되어 있기 때문입니다. 역시 제로 컨피규레이션 지.. 더보기 struts2 request response 객체 및 로그인 session 체크 1. request, response 객체 구하기 몇 가지 방식이 있다고 하는데, 여기서는 ServletRequestAware, ServletResponseAware 인터페이스를 상속하는 방법입니다. 1. 인터페이스의 구현 해당 액션에서 직접 구현해도 좋고, 아니면 각 인터페이스를 구현한 클래스를 구현한 뒤 상속하는 것도 좋다. 다만 구현하는 클래스에 HttpServletRequest와 HttpServletResponse 변수를 선언한 뒤 각 인터페이스의 추상메서드를 구현해야 한다. 여기서는 따로 구현한 클래스를 만든 뒤 상속받아서 사용한다. # 구현한 클래스 public class BaseActionSupport extends ActionSupport implements ServletRequestAwa.. 더보기 iBATIS Inline parameter Map 오늘 겪은 문제는 inline parameter map syntax 부분에서 발생했는데 다음과 같은 에러 메세지가 출력되었다. com.ynseo.dao.DAOException: fail to update item at com.ynseo.accountbook.db.ItemDAO.update(ItemDAO.java:229) >........................ Caused by: com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in properties/Item.xml. --- The error occurred while applying a parameter map. --- Check the Items.update.. 더보기 iBatis Inline parameter map Exception 다루기 ibatis 설정 파일은 크게 두부분으로 나뉘는데 ibatis 자체의 기능을 설정하는 파일과 실제 POJO와 Table의 관계를 정의하는 파일로 나뉜다.(전자를 ibatis.xml이라고 하고 후자를 slqMap.xml 이라고 표기함) ibatis.xml에서는 db 풀링, 트랜잭션 처리, 특정 POJO의 값을 DB의 데이터형으로 치환해주는 type handler, sqlMap.xml파일에 대한 참조를 설정한다. 로딩 시 ibatis.xml 에 정의된 각각의 element들을 읽어서 설정 정보를 반영한 후 본격적으로 sqlMap.xml 파일들을 읽어들여서 나중에 실행시 사용될 parameterMap과 resultMap 정보를 해석, 보관해둔다. 1. 초기 기동 시 발생하는 예외 초기 기동시에는 id나 cla.. 더보기 SQL 활용도 향상 방법 3. SQL의 활용도 향상 방법 여러가지 SQL중에서 우리가 가장 잘 활용해야 하는 거은 'SELECT' 문이다. SELECT문은 단지 원하는 데이터를 읽어달라는 문장이 아니라 데이터를 읽어 필요한 가공처리를 한 후 그 결과를 요구하는 문장인 것이다. 우리가 어느선까지 가공 처리된 SELECT 문장을 생성할 수 있느냐에 따라 SQL의 역할은 크게 달라진다. - SQL은 명령어가 아니라 하나의 프로그램 - 데이터베이스에게 일을 시킬 수 있는 유일한 수단 - 절차형 사고를 집합적 사고로 전환해야 - 동일한 결과를 내는 처리경로는 많으나 효율의 차이는 큼 - 응용력에 따른 개인차 - 사용상의 미묘한 차이가 엄청난 효율성의 차이를 가져옴 - 1000줄의 절차형 프로그램을 10여줄로 처리가능 - 1000초의 수행.. 더보기 eclipse External tools http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.user/concepts/concepts-exttools.htm 더보기 eclipse에서 자동 리프레쉬(Refresh) 하기 Refresh하기 귀찮으신 분들에게 유용 [설정하는 법] Window > Preferences > General > Workspace > Refresh automatically 참조사이트> http://shiinatsu.egloos.com/1350111 추가적으로 저장을 하면 자동으로 import 되기 하기. Java / Editor / Save Actions 에 들어가면 Organize Imports 를 체크해 준다. 더보기 Eclipse의 디버깅 설정 이클립스에서 VC처럼 디버깅을 하자. 사실 디버깅은 처음 접하는 사람에겐 쉽지 않다. 책을 보고 따라하면 너무나 쉬운데 막상 프로그래밍하면서 적용하다 보면 애를 먹고는 한다. 그러다 과감하게 난 System.out.println()의 강력함을 알고 있다며 중요 요소에 값을 찍는다. 그러다 어디가 어디서 나오는 값인지 몰라서 갑갑하게 돼고, 그러다 이번 프로그래밍엔 문제가 많았어. 다시 짜지 뭐. 난 부지런하니까... 하게 돼고... 그러다 다시 디버깅 책을 찾아 따라하게 돼고.... 그렇지만, 언젠가 좋아지겠지 하며 오늘도 이런 악순환을 계속해본다. 정말 언젠간 좋아지겠지. 이클립스에서 디버깅을 해본 사람은 알 것이다. 무료인데도 정말 너무나 훌륭한 녀석이다. 정말 고마운 분들이 세상엔 많이 계시고, 그.. 더보기 Eclipse의 JSDT Window -> Preferences -> General -> Content Types 로 들어간다. 위쪽에 보면 Text라고 있다. 클릭하면 파일 종류들이 쭈~~욱 나오는데, JavaScript를 살짜쿵 골라준다. 그러면 아래쪽의 Default encoding 메뉴에 US-ASCII 라는 보기 싫은 인코딩이 뜰거다. /* 한글 메뉴 시 메뉴중 "창" - 환경설정 - 일반 - 컨텐츠유형 - 우측의 텍스트 펼쳐서 javascript 선택 - 하부에 기본값 인코딩(E) */ 이놈을 MS949든, EUC-KR이든 바꿔준다. 그리고 확인사살을 하기위해 그 옆의 Update 버튼을 꾸욱! 눌러준다. 끝! 기존 : ISO-8859-1 변경 : EUC-KR 참조> http://blog.daum.net/naline1.. 더보기 md5 (자바, 파이썬) 어떻게 쓸 때마다 찾아봐야 하는 지 ㅠㅠ; 이런 것보면 자바는 쉬운게 아니게 맞다. 나만 그런가 ;; 아래 부분의 자바코드를 참조. public static final String digestMd5(String s) throws NoSuchAlgorithmException { String t = null; try { MessageDigest md5 = MessageDigest.getInstance("md5"); byte[] code = md5.digest(s.getBytes()); StringBuffer sb = new StringBuffer(); for (byte b : code) { sb.append(String.format("%02x", b)); } t = sb.toString(); } catch .. 더보기 이전 1 2 3 다음