JAVA
-
[ OSGi ] 3 - OSGi plugin 의존 관계JAVA 2014. 8. 20. 19:34
[ OSGi ] 2 - OSGi Plugin Project 에서 OSGi에서 구동될 Plugin을 개발할 프로젝트 생성과 install, start를 해보았다. 여기서는 여러 Plugin 간의 의존 관계를 보도록 하자. 이전에 만들었던 HelloWorldOSGi의 Plugin에 HelloOSGiWorldPrinter.java를 추가하고HelloWoldOSGiSub Plugin을 추가로 만들어서 HelloOSGiWorldPrinter에 정의된 메소드를 호출해보도록 하겠다. 추가 프로젝트 생성1. HelloWorldOSGi Project에 다른 Plugin에서 호출할 HelloOSGiWorldPtinter.java를 생성한다. 그리고 printer method를 추가한다. package kr.co.jabsi..
-
[ OSGi ] 2 - OSGi plugin projectJAVA 2014. 8. 19. 19:31
[ OSGi ] 1 - OSGi 기초 에서 OSGi platform 까지 구동했다. 여기서는 OSGi안에서 서비스될 plugin( bundle ) 을 만들어 보도록 하자.우선 eclipse를 구동후 프로젝트를 생성하자 프로젝트 생성 1. 프로젝트 생성에서 Plug-in Project를 선택한다. 2. This plug-in is targeted to run with 에서 "an OSGi framework" 을 선택하고 "standrd"를 선택한다. 3. ID를 입력한다. ID : plugin(bundle)의 식별자가 된다. (OSGi command 에서 ss 명령어 입력시 나오는 Bundle-SymbolicName ) Version : plugin(bundle) 버전 Name : Bundle-Name A..
-
[easyExcelMaker] 쉽게 만드는 ExcelJAVA/LIBRARY 2014. 7. 22. 10:34
2012년 개인 Library로 만든 것으로, 간단하게 Excel을 만들때 사용한다. String[] keys = {"CATEGORY_NM", "USER", "USER_ID", "CONTENTS", "START_DT", "END_DT"}; String[] titles = {"서비스-카테고리", "요청자", "담당자", "내역", "시작일", "종료일"}; ExcelUtil.makeExcel(response, "파일명.xls", "문서내 제목 or 검색 조건", titles, keys, List data); 인자로 response를 받아 처리하기 때문에 웹 전용 Library 이다. 사용법은 위와 같으며 source code는 git 에 올려 두었음. github : https://github.com/la..
-
[Docx4j] 문자열 치환으로 간편한 문서 만들기JAVA/LIBRARY 2014. 7. 22. 09:37
2014년 7월 개인 프로젝트로 보고서 작성을 위해 간편하게 문자열 치환으로 보고서를 만드는 library를 생각하고 80% 정도(POI를 이용하여서 크게 어렵지 않았다.) 만들었을때, http://www.docx4java.org/trac/docx4j 사이트를 보게 되었다. 내가 만들려고 하던 것이 이미 구현 되어 있었기 때문에 과감하게 만들던 library는 접고 개인 프로젝트에 docx4j를 사용하였다. 사용법을 간단하게 정리 한다. docxj4에서는 많은 기능을 제공한다. 그 중 이번 개인 프로젝트에서 사용한 문자열 치환하는 샘플 소스 이다. public class VariableReplace { public static void main(String[] args) throws Exception {..
-
[ OSGi ] 1 - OSGi 기초JAVA 2014. 6. 24. 22:47
OSGi란 ( Open Service Gateway initiative )OSGi는 Java VM에서 구동 될수 있는 플렛폼의 규약(Dynamic Module for Java)으로 Bundle( 혹은 Component / Plug-in / Moudule )의 Life Cycle ( install, start, stop, update, uninstall )을 Application의 재시작 없이 관리하는 프레임워크이다.OSGi의 적용된 대표적인 Application으로는 java 개발자라면 누구나 사용하는 Eclipse가 있다. (Eclipse의 Plugin인은 OSGi 기반이다. ) OSGi는 Specification만 존재하므로 여러 구현체 들이 따로 있는데 다음과 같다.Eclipse EquinoxApa..
-
블로킹 TCP 서버/클라이언트 작성하기JAVA/NIO2 2014. 3. 11. 00:20
1. 서버 작성하기 - 새 서버 소캣 채널 생성하기스트림 지향 리스닝 소캣을 위한 서택가능 채널을 생성 java.nio.channels.ServerSocketChannel 클래스 에서 제공하며, 멀티스레드에서 사용해더 안전하다. ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); *새로 생성한 서버 소켓 채널은 바이딩되지도 연결되지도 않았음을 염두해 둬야 한다. 서버 소켓이 이미 열려있는지 또느 서버 소켓을 성공적으로 열었는지 ServerSocketChannel.isOpen() 메서드를 호출해서 확인 할수 있다. if(serverSocketChannel.isOpen()){ ... } - 블로킹 설정하기서버 소켓 채널을 성공적으로 열..
-
[NIO.2]블로킹(BIO) 논블로킹(NIO) 차이점JAVA/NIO2 2014. 3. 8. 00:55
블로킹 특징- I/O가 가득 수신할 때까지 주어진 스레드가 아무것도 하지 않느다고 가정 하는 것이다. 이 경우 메소드가 즉시 애플리케이션으로 제어를 반환 하지 않으므로 애플리케이션에서는 대기 하기 된다.블로킹과 동기는 같은 뜻이다. 논블로킹 특징- I/O 요청을 즉시 큐에 넣고 애플리케이션으로 제어를 반환한다.(메서드 역시 즉시 반환 된다.)요청은 추후 커널에서 처리 된다.또한 논블로킹과 비동기는 같은 것이 아니다. 논블로킹은 폴링(polling), 비동기는 병렬(parallel)에 가깝다. 참고 : http://stackoverflow.com/questions/2625493/asynchronous-vs-non-blocking
-
스레드 기본(3)JAVA/in 기초 2014. 3. 5. 01:27
동기화 스레드의 문제점스레드들이 여러 개 동시의 작업을 진행하기 때문에 공유자원의 문제가 발생한다. 동기화(Synchronization)의 정의줄서기(번갈아 가면서 순서대로 공유자원 사용하기) 동기화의 기법synchronized 블록(자원을 사용할 때 자원에 락(Lock)을 거는 방식)wait() 와 notify() 동기화가 보장되지 않는 예제 public class NotSyncDataMain { public static Data data = new Data(); public static void main(String[] args) { System.out.println("main 시작"); Tom t = new Tom(); Jane j = new Jane(); t.start(); j.start(); S..