Scouter는 오픈소스 apm(Application Performance Management)으로써 성능 요소를 모니터링하고 관리 application이다.
성능 정보는 일반적으로 Process CPU, Heap Memory, GC, Datasource ConnectionPool, ThreadPool, Request Time, Response Time, TPS등 다양한 정보를 본인이 원하는 정보를 선택하여 모니터링 할 수 있습니다.
대량의 데이터가 수집 되고 상세 프로파일링을 수행하여 특정 메소드, 수행 쿼리 지정 구분 하여 모니터링이 가능하다.

참조 자료

youtu.be/iuArTzsD7Ws?t=15

gunsdevlog.blogspot.com/2017/07/scouter-apm-1.html

 

-Scouter 다운로드

이 설치는 서버OSwindows 기준 입니다.

1.Scouter 릴리즈 페이지에서 최신버전을 다운 받는다.

https://github.com/scouter-project/scouter/releases

2. scouter-all-[version].tar.gz 을 받는다.

-Scouter CollectorAgent를 포함하는 압축 파일입니다.

받아서 서버에 C:드라이브에 둡니다.

3. scouter.client.product-[os].tar.gz 을 받는다.

- Client(Viewer) 프로그램입니다. 내가 모니터링할 내컴퓨터 에 둡니다.

 

-Scouter Server 설치 및 가동

1.서버에 scouter-all-[version].tar.gz 의 압축을 풀어줍니다. 압축을 푼 Scouter 폴더만 C: 드라이브 위치에 둡니다.

2.서버에서 CMD 창을 열고 scouter 디렉터리에 server 디렉터리 로 접근해 start.bat 를 쳐서 실행 해주면  scouter server 모듈이 기동 됩니다.

3.CMD창에 netstat -an|find "6100"  치서 아래와 같이 나오면 정상기동 확인 된 것 입니다.

 

 

- Scouter Client 실행

1.내컴퓨터 아무 곳에 scouter.client.product-[os].tar.gz의 압축을 풀고 실행합니다.

2. 접속할 Scouter ServeIP나 도메인을 입력합니다.기본 포트는 6100, IDPassword를 입력합니다

. 기본값 : admin / admin

3. Collector에 접속되면 좌측 상단의 Object-View에서 Collector 서버 하나가 있는 것을 확인할 수 있습니다.

 

-Scouter Agent 실행

1.Host Agent 실행 전에 먼저 Collector 접속 설정이 필요 해당 위치 - [scouter-dir]/agent.host/conf/scouter.conf 파일을 편집기로 열어 net_collector_ip에는 Collector 접속 IP나 도메인을 기입

2.Host Agent를 시작한다. -CMD를 열어 scouter 디렉터리에 agent.host 디렉터리 로 접근해 host.bat 를 쳐서 실행 해주면 Host Agent 수행 됩니다.

3.Host Agent가 잘 실행되었다면, 앞에서 실행한 Scouter Client에서  Object view 에 하위가 뜬다 저기 %CPU점유량이다.

4.Client메뉴중 환경설정(Windows -> Preferences) 메뉴로 들어가서 default ‘Host’ windows default ‘javaEEtomcat으로 설정한다. 그럼 CPU 모니터링이 가능하다.

 

-Java Agent 실행 (이클립스 톰캣실행시)

Java Agent는 단독으로 실행되는 것이 아니라, 모니터링할 Java Program이 실행될 때 attach되어 모니터링을 수행합니다. 따라서 실행하는 Java Program에서 scouter agent를 인식할 수 있도록 명령 행 옵션을 설정해야 합니다.

톰캣시 시작 하는 곳에 자바설정을 잡아 주면 된다.

1.테스트 서버는 이클립스에서 톰캣을 실행 시켜주니 이클립스 서버부분에서 설정 부분을 해준다.

2.Servertomcat부분 더블클릭 하면 페이지가 뜬다. 다음 Open launch configuration 을 클릭해 edit가 뜨면 Arguments탭에 가운데 VM arguments 부분에 해당 자바설정 부분을 넣는다.(경로확인후)

 -javaagent:"C:\scouter\agent.java\conf\scouter.agent.jar" 

-Dscouter.config="C:\scouter\agent.java\conf\scouter.conf"

-Dobj_name=scouterapptestWeb

3. 서버를 재시작 한다. 그럼 view 에 모든 데이터가 보이기 시작한다.

 

-Java Agent 실행

Java Agent는 단독으로 실행되는 것이 아니라, 모니터링할 Java Program이 실행될 때 attach되어 모니터링을 수행합니다. 따라서 실행하는 Java Program에서 scouter agent를 인식할 수 있도록 명령 행 옵션을 설정해야 합니다.

톰캣시 시작 하는 곳에 자바설정을 잡아 주면 된다.                                                      

-1.설치 톰캣

. Tomcat  bin 경로로 가서 Tomcat8w 클릭하며 Properties 가 뜨면 java 탭에 가운데 Java Options 에 아래   설정을 붙여 넣는다. (경로확인해보고)

-2.비 설치 톰캣

Tomcat  bin 경로로 가서 Catalina.bat 편집하기해 “JAVA_OPTS”부분에 뒤쪽으로 아래   설정을 붙여 넣는다. (경로확인해보고)

 -javaagent:"C:\scouter\agent.java\conf\scouter.agent.jar" 

-Dscouter.config="C:\scouter\agent.java\conf\scouter.conf"

-Dobj_name=scouterapptestWeb

3. 서버를 재시작 한다. 그럼 Client view 에 모든 데이터가 보이기 시작한다.


이렇게 하면 모니터링이 가능하다. 짜잔!!! 

 

이제 scouter 뷰 켜놓고 이상 있으면 확인 하면 된다!! 

 

감사합니다.

프로젝트 만든후 jsp파일 만들었을때 빨간줄이 가있다.

에러를 확인하니


The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

이런 메시지가 보인다.


해결 : 프로젝트 우클릭 -> Build Path -> Configure Build Path...-> Libraries 탭 -> add library 

-> server runtime -> was 선택 -> 끝



안녕하세요 엘체프 입니다.

자바의 마지막 소켓(socket) 통신으로 하는 채팅프로그램입니다.


소스 import해서 구현방법 알려 드리겠습니다.

Chatting.zip

1.파일을 받습니다. 그리고 import를 합니다.


->Existing Projects into Workspace

->select archive file ->파일 선택-> Finish

소스를 보고 분석하고 주석달며 보아요 

-----------

구현 해보겠습니다.

일딴 서버를 구동 시켜야합니다.

-MultiSever 파일을 실행시켜줍니다.

그럼 콘솔창에 먼가 움직이고 있으니 정지버튼이 활성화 되있네요.

-창을 띄우려면 main에다가 값을 넣어줘야합니다.

->ChattingClient 우클릭 -> Run As -> Run Configurations...

->Java Application -> Arguments 탭 -> Variables

->검색에 's'만 치면 ->string_prompt 선택 -> OK

run 하고 실행하면 창이 뜹니다.

UI창이 뜨면 아이디 ip port 를 쓰고 OK 누르면 채팅창이 뜨며 채팅이 가능해집니다.

-localhost 를 사용하면 제가 혼자 쓰는거고 제컴터 ip를 쳐서 만들면 다른컴터에서도 접속이 가능 합니다. 

-채팅장 입장!

-ChattingClient 파일 실행 할때마다 접속이 가능합니다. 

아디만 바꿔서 여러이서 입장

채팅 하기~~~~

자바 채팅 프로그램이였습니다.


감사합니다.


안녕하세요 엘체프 GG 임돠.

컬렉션프레임워크 마지막 List,Map 임돠

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.javac.im;
 
import java.util.Iterator;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.TreeMap;
 
public class CollectionFramework3 {
 
    public static void main(String[] args) {
 
//        Map<String, Integer> map = new HashMap<>();
        NavigableMap<String, Integer> map = new TreeMap<>();
    //key의 오름차순(ascending sorting) 정렬(기본지원)
 
        map.put("노르웨이"14);
        map.put("독일"14);
        map.put("미국"11);
        map.put("네덜란드"9);
        map.put("한국"6);
 
/*        Set<Map.Entry<String, Integer>> set = map.entrySet();
        //map key = set 공통의 성질(중복 불허)        
        Iterator<Entry<String, Integer>> it = set.iterator();
        //순서가 없다 -> 반복자(iterator) 패턴 -> 열거(나열)        
        while(it.hasNext()){
            Entry<String , Integer> entry = it.next();
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }*/
        
/*        Set<String> set=  map.keySet();        
        Iterator<String> it = set.iterator();        
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key + " : " + map.get(key));            
        }*/
        
/*        NavigableSet<String> set  = map.descendingKeySet();
        //key의 내림차순 정렬
        Iterator<String> it = set.iterator();
        while(it.hasNext()){
            String key =it.next();
            System.out.println(key + " : " + map.get(key));            
        }*/
        
/*        NavigableSet<String> set  = map.navigableKeySet();
        //key의 내림차순 정렬
        Iterator<String> it = set.descendingIterator();        
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key + " : " + map.get(key));            
        }*/
        
        
    }// end main
}// end class
 
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.javac.im;
 
import java.util.NavigableMap;
import java.util.TreeMap;
 
public class CollectionFramework4 {
 
    public static void main(String[] args) {
 
//        Map<String, Integer> map = new HashMap<>();
        NavigableMap<String, Integer> map = new TreeMap<>();
        //key의 오름차순(ascending sorting) 정렬(기본지원)
 
        map.put("노르웨이"14);
        map.put("독일"14);
        map.put("미국"11);
        map.put("네덜란드"9);
        map.put("한국"6);
 
        /*//Java 1.8ver : 함수형(람다 표현식)
        map.forEach((k,v)-> System.out.println(k+", "++ "개"));*/
        
        /*map.entrySet().iterator().forEachRemaining(x->System.out.println(x));*/
        
        /*map.entrySet().forEach(x->System.out.println(x));*/
        
        /*map.keySet().forEach(x->System.out.println(x));//key값만 나열*/
        
        map.keySet().forEach(x->System.out.println(x + " : " + map.get(x)));            
        
    }// end main
}// end class
 
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.javac.im;
 
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
 
public class CollectionFramework5 {
 
    public static void main(String[] args) {
 
        List<String> list = new ArrayList<>();
        
        list.add("박준형");
        list.add("데니안");
        list.add("남근곤");
        list.add("윤계상");
        list.add("손호영");
        list.add("김태우");
        
/*        list.sort(new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {                
//                return o1.toString().compareTo(o2.toString());//오름차순
                return o2.toString().compareTo(o1.toString());//내림차순
            }
        });
        list.forEach(x->System.out.println(x));*/
        //체이닝프로그램
        list.stream().sorted(Comparator.naturalOrder()).forEach(x->System.out.println(x));
        
        
    }// end main
}// end class
 
cs

 

감사합니다.

안녕하세요 엘체프 GG 입니다.

자바의 꽃 컬렉션 프레임워크 끄적여 볼 께요.

일딴 소스먼저 풀고 정리해야겠어요.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.javac.im;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
 
public class CollectionFramework1 {
 
    public static void main(String[] args) {
        
//        ArrayList list = new ArrayList();
        ArrayList<String> list = new ArrayList<String>();
        // <E> : elemert(요소)  -> 참조형Type(클래스,인터페이스...)
        //구성 요서 자료형 제한 -> 성능향상!
        list.add("윤성빈");
        list.add("김연아");
        list.add("남근곤");
        list.add("김영미");
        list.add("남근곤");
        list.remove(4);//5번째 지워~
        
/*        System.out.println("첫번째 애를불러~ " +list.get(0));        
        System.out.println("list의 크기능 : " + list.size());
        System.out.println("list : " + list);*/
        
/*        for(int i =0; i <list.size(); i++){
            System.out.println(list.get(i));
            
        }*/
        
/*        for(String s : list ){
            System.out.println(s);
        }*/
        
/*        //반복자(Iterator) 디자인 패턴 : GoF의 디자인 패턴 중 하나
        for (Iterator iterator = list.iterator(); iterator.hasNext();) {
            System.out.println( iterator.next());            
            
        }*/
        
        
/*        list.sort(Comparator.naturalOrder());//오름차순(ASC:ascending) 정렬(sorting)
//        list.sort(Comparator.reverseOrder());//내림차순(DESC:descending) 정렬(sorting)
        for(String s : list ){
            System.out.println(s);            
        }*/
        
/*        //함수형 프로그래밍(람다식)
        list.stream().forEach(x->System.out.println(x));
        list.stream().forEach(System.out::println);//자바에 없던표현들 
        list.stream().forEachOrdered(str -> System.out.println(str));//소스가 간결해진다.         
*/    
        Object objlist[] =  list.toArray();//배열로 변환
        for(Object o : objlist){
            System.out.println(o);            
        }
        
        System.out.println("^---^");
        //배열 -> List 변환
        List<Object> otherList = Arrays.asList(objlist);
        for(Object o : otherList){
            System.out.println(o);            
        }
        
        System.out.println("^---^");
        otherList.forEach(System.out::println);
        
    
    }//end main
}//end class
 
cs

감사합니다.

'스터디 > JAVA' 카테고리의 다른 글

자바 컬렉션프레임워크(CollectionFramework)_3  (322) 2018.02.27
자바 컬렉션프레임워크(CollectionFramework)_2  (296) 2018.02.22
자바 내부 클래스  (334) 2018.02.22
자바 for문 별찍기  (292) 2018.01.30
자바 2차원배열 성적구하기  (6) 2018.01.30

안녕하세요 엘체프 GG임돠

클래스안에 클래스 내부 클래스에 대해 끄적여 봅니다.

GUI어플리케이션(AWT,Swing)등의 이벤트 처리에 주로 사용되고 코드의 복잡성을 줄 수 있다.


-창뛰우기 1

자바에서 지원하는 WindowListener 사용 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.javac.im;
 
 
import java.awt.*// JAVA 기본 GUI Component/Container ToolKit 
// ex) Button, Frame, Panel 등등
import java.awt.event.*// event = I/O device 현상  
// ex) 버튼(장치: device)을 누른다, 마우스(장치 : device)를 클릭한다.
// GUI Component(버튼, 메뉴 등등)를 처리하는 방식
// 1. 장치(device -> Component) 이벤트(Event) 발생
// 2. 감지자(Listener) 가 대기 하고 있다가 이벤트 감지.
// 3. 핸들러(Event handler)가 이 이벤트를 처리한다.
 
class InnerEx8
{
 public static void main(String[] args) 
 {
  Frame f = new Frame();   // Component(컴포넌트)를 포함시킬 Container(컨테이너)를 추가한다.
  f.setSize(300200);        // 컨테이너의 크기를 설정한다.
  f.setLayout(new GridLayout(1,1));  // 레이아웃 매니저의 설정을 해제한다.
  
  Button b = new Button("Start");  
  b.setSize(200100);        // Button의 크기를 설정한다.
  f.add(b);                      // 생성된 Button을 Frame에 포함시킨다.
  f.setVisible(true);          // 화면에 보여지도록 설정한다. 
 
 // 만약 윈도우 닫기 버튼 "X"이 활성화(작동)되려면
 // 아래의 이벤트 리스너와 핸들러를 추가하면 된다.
 // 추가하지 않을 경우는 Ctrl + Alt+ Del 를 눌러서 프로세서 패널에서
 // javaw.exe를 프로세서 종료를 해야 창이 닫히게 된다.
 
  f.addWindowListener(new WindowListener() {//모두다 꺼네 써야한다.
      
        public void windowClosing(WindowEvent e) {
             e.getWindow().setVisible(false);
             e.getWindow().dispose();
             System.exit(0);
        }
    
        public void windowOpened(WindowEvent e) { }
        public void windowClosed(WindowEvent e) { }    
        public void windowIconified(WindowEvent e) { }
        public void windowDeiconified(WindowEvent e) { }
        public void windowActivated(WindowEvent e) { }
        public void windowDeactivated(WindowEvent e) { }
    
     }
   );
  
 
  // Event Listener(이벤트 리스너) , 간단하게 "리스너"라고 많이 부른다.
  // : 장치(device)에서 발생하는 I/O(입력/출력) 신호를 감지하는 "감지자"
  // 메소드의 매개변수가 들어갈 자리에 클래스가 들어감(내부 클래스)
  // -> 코드가 간결해짐 -> 성능 향상!
  // 이러한 디자인 패턴을 어댑터 패턴(Adapter pattern)이라고 한다.
  // 쉽게 말해서 어떤 프로그램에 다른 프로그램 코드를 일부분 처럼 (매개변수로) 끼워써서
  // 코드를 간결하게 줄이는 방식.
 
  b.addActionListener(new ActionListener() {
   
       // 이벤트 핸들러(Event Handler) : 이벤트 처리자
       // 실제로 프로그래머는 이 이벤트 처리자(핸들러) 안에서 
       // 오버라이드(override: 프로그래밍!) 하여 프로그램을 작성.
   
    public void actionPerformed(ActionEvent e) {
     
     // 이 부분이 프로그래머가 작성한(재정의:override) 부분
     System.out.println("ActionEvent occurred!!!");
    }
   } // 익명 클래스의 끝
  ); // 리스너의 끝
  
 } // main메서드의 끝
// InnerEx8클래스의 끝
cs

-창뛰우기 2

자바에서 지원하는 WindowAdapter 사용 예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.javac.im;
 
 
import java.awt.*// JAVA 기본 GUI Component/Container ToolKit 
// ex) Button, Frame, Panel 등등
import java.awt.event.*// event = I/O device 현상  
// ex) 버튼(장치: device)을 누른다, 마우스(장치 : device)를 클릭한다.
// GUI Component(버튼, 메뉴 등등)를 처리하는 방식
// 1. 장치(device -> Component) 이벤트(Event) 발생
// 2. 감지자(Listener) 가 대기 하고 있다가 이벤트 감지.
// 3. 핸들러(Event handler)가 이 이벤트를 처리한다.
 
class InnerEx9
{
 public static void main(String[] args) 
 {
  Frame f = new Frame();   // Component(컴포넌트)를 포함시킬 Container(컨테이너)를 추가한다.
  f.setSize(300200);        // 컨테이너의 크기를 설정한다.
  f.setLayout(new GridLayout(1,1));  // 레이아웃 매니저의 설정을 해제한다.
  
  Button b = new Button("Start");  
  b.setSize(200100);        // Button의 크기를 설정한다.
  f.add(b);                      // 생성된 Button을 Frame에 포함시킨다.
  f.setVisible(true);          // 화면에 보여지도록 설정한다. 
 
 // 만약 윈도우 닫기 버튼 "X"이 활성화(작동)되려면
 // 아래의 이벤트 리스너와 핸들러를 추가하면 된다.
 // 추가하지 않을 경우는 Ctrl + Alt+ Del 를 눌러서 프로세서 패널에서
 // javaw.exe를 프로세서 종료를 해야 창이 닫히게 된다.
 
  f.addWindowListener(new WindowAdapter() { //사용하고 픈거만 꺼네쓸쑤 있다.
 
    @Override
    public void windowClosing(WindowEvent e) {
         e.getWindow().setVisible(false);
         e.getWindow().dispose();
         System.exit(0);
    }
      
      
  } );
  
 
  // Event Listener(이벤트 리스너) , 간단하게 "리스너"라고 많이 부른다.
  // : 장치(device)에서 발생하는 I/O(입력/출력) 신호를 감지하는 "감지자"
  // 메소드의 매개변수가 들어갈 자리에 클래스가 들어감(내부 클래스)
  // -> 코드가 간결해짐 -> 성능 향상!
  // 이러한 디자인 패턴을 어댑터 패턴(Adapter pattern)이라고 한다.
  // 쉽게 말해서 어떤 프로그램에 다른 프로그램 코드를 일부분 처럼 (매개변수로) 끼워써서
  // 코드를 간결하게 줄이는 방식.
 
  b.addActionListener(new ActionListener() {
   
       // 이벤트 핸들러(Event Handler) : 이벤트 처리자
       // 실제로 프로그래머는 이 이벤트 처리자(핸들러) 안에서 
       // 오버라이드(override: 프로그래밍!) 하여 프로그램을 작성.
   
    public void actionPerformed(ActionEvent e) {
     
     // 이 부분이 프로그래머가 작성한(재정의:override) 부분
     System.out.println("ActionEvent occurred!!!");
    }
   } // 익명 클래스의 끝
  ); // 리스너의 끝
  
 } // main메서드의 끝
// InnerEx8클래스의 끝
cs


감사합니다.

안녕하세요 GG 입니다.

자주 쓰고 나오는 단어를 정리 하려합니다. 


O.통신

-프로토콜 : 사전적의미 ->  컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계

-TCP : 사전적의미 -> 전송 제어 프로토콜(Transmission Control Protocol, TCP 전송조종규약)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다.



O.언어




O.비지니스 

-ASIS , TOBE  실무와서 제일 처음 듣었던 단어 asis-tobe 인듯 싶네요 asis는 현제와과거 소스(시스템) 이고 tobe는 미래 개선후의 소스(시스템)을 말하는 거였어요.

-전자구조개선프로젝트 프로세스 : 

1. Servlet Filter : Request에 대한 Servlet 처리 이전에 공통기능 처리 수행 

2. DispatcherServlet : Spring F/W 에서 제공하는 공통 Servlet으로 MappingHandler를 통해 Request를 처리할 Controller를 Mapping 해준다

3. Handler Mapping : Request에 해당하는 Controller를 검색하여 Servlet으로 전달

4.Interceptor : Controller에 대한 처리 이전에 선/후행에 대한 공통 기능 처리 수행

5.Controller : Client로 부터의 Request를 Parsing,Validation,BizLogic 수행및 처리 결과를 Client로 반환하는 역활 수행

6. Servide : Business Logic을 포함하고 있으며, DAO를 호출하여 DBMS에 대한 CRUD(create,read,update,delete)를 수행함

7. CommonDAO : SQL를 호출하여 그 결과를 반환하는 역할을 수행하며, 본 Famework에서는 CommonDAO를 통해 수행함

8. SQL: DBMS에 대한 CRUD 등을 담은 SQL을 Mybatis기반으로 XML 파일을 생성, 반복적인 DAO 작업을 자동화한 컴포넌트 코드로 부터 SQL을 분히라고 쿼리 실행의 In/Out 객체 바인딩/매핑 지원

9. View : 모델이 가진 정보를 다양한 방식으로 화면에 출력

10. View Resolver : View name에 해당하는 View를 찾아 Dispatcher Servlet으로 전달

11. Inbound Gateway : 대내 시스템등으로 부터 TCP 기반 연계 요청을 처리하기 위한 진입점

12. Service Activator : TCP기반 연계 요청 시, 요청 전문을 Parsing하여 VO로 변환하고, 이를 이용하여 Service를 호출하기위한 역활 수행





안녕하세요 엘체프 GG 입니다. 자바설치 및 환경 설정 정보입니다.

 

 


자바 설치 및 환경 설정

자바 프로그래밍을 시작하기 위해서는 자바 플랫폼을 설치하고 약간의 환경설정을 해주어야 합니다.
또한 개발자인 저도 개인 장비를 포맷하거나 개발 환경이 바뀌어 다시 설치 및 세팅을 해주어야 할 때가 있습니다.
여러번 설치해도 오래되면 잊어버리는 것이 개발환경 셋팅인 것 같습니다.

여기서는 자바 표준 플랫폼인 Java SE(Standard Edition)를 설치할 것입니다.
Java SE의 경우 방금 말했듯이 자바의 표준 플랫폼이며 실행 환경(JRE)과 개발환경(JDK)을 모두 포함하고 있습니다.
또한 Java EE(Enterprise Edition)과 Java ME(Micro Edition)이 Java SE를 기반으로 하고 있으므로 가장 기본이 되는 플랫폼이라고 할 수 있습니다.

1. 먼저 자바를 다운로드하기 위해 오라클 홈페이지에 접속해 줍니다.

 

 - 링크 :  https://www.oracle.com/index.html

 


2. menu-> Java -> javase 메뉴로 이동합니다.

나중에 오라클 사이트가 리뉴얼 될 경우를 대비해 이또한 링크를 걸어두겠습니다.

 



 

3. Java Platform (JDK)... 를 클릭합니다.

 

 


4. Accept License Agreement를 눌러 라이센스 동의를 해준 후 자신의 환경에 맞게 다운로드 해줍니다.
   - 저의 경우 64비트 Windows 이므로 2번을 다운로드 해줍니다.




5다운로드 파일을 실행하여 설치합니다. 별 다른 설정 없이 계속 Next 후 설치가 완료되면 close 해줍니다.



6. 설치과 완료되면 환경변수 설정 이라는 것을 해주어야 합니다. [내컴퓨터 마우스 우클릭] -> [속성] 을 눌러줍니다.



7. 고급 시스템 설정에 들어갑니다.




8. [고급 탭] - [환경 변수] 를 누릅니다.



9. 다음과 같이 환경 변수 설정하는 창이 나타납니다. [Path를 선택] - [편집(I)... 클릭]
   - 크게 위와 아래로 구분되는데 위 kdh에 대한 사용자 변수의 경우 현재 로그인 되어있는 윈도우 계정에서만 사용하는 환경변수입니다.
   - 아래 시스템 변수의 경우 로그인 되는 계정과 상관없이 전역에 걸쳐 사용되는 환경변수를 설정할 수 있습니다.


   - 환경변수는 실행환경 설정을 위한 변수입니다.
   - 환경변수는 Path , JAVA_HOME, CLASSPATH 이 세가지를 설정 할 것입니다.
   - 환경변수가 무엇인지는 이해하기 어려울 수 있으나 쉽게 말하자면 운영체제나 자바 어플리케이션이 가장 먼저 탐색하는 경로 또는 영역 정도로 생각하시면 됩니다.


10. Path에 JAVA가 설치된 경로의 bin디렉터리 경로를 추가해줍니다.
보통 따로 설정을 하지 않았을 경우 C:\Program Files\Java\jdk1.8.0_121\bin 입니다.

 


참고! 윈도우 7의 경우에는 변수 값의 맨 뒤에 ; (세미콜론)을 써주고 경로를 넣습니다. 세미콜론은 경로들을 구분하는 구분자로 사용됩니다.


참고! 윈도우 10의 경우 새로만들기 - 경로 입력 - 확인을 눌러줍니다.




10. JAVA_HOME과 CLASSPATH를 추가해 줍니다.
  - 9번 화면에서 새로 만들기 를 누릅니다
  - JAVA_HOME의 경우  자바가 설치된 디렉터리를 경로로 잡아줍니다.  C:\Program Files\Java\jdk1.8.0_121

 

     -CLASSPATH의 경우 JAVA_HOME 경로에 lib 디렉터리를 경로로 잡아줍니다. C:\Program Files\Java\jdk1.8.0_121\lib 또는 %JAVA_HOME%\lib



완료했다면 모든 설정창을 확인을 눌러 설정을 적용해줍니다.

11. 잘 됐는지 확인하기.
     - 키보드 윈도우버튼(시작버튼) + R 을 눌러 cmd를 실행해 줍니다.



     - javac(컴파일러) 명령어와 java(인터프리터) 명령어를 각각 실행해 봅니다.
     - 다음과 같이 나오면 성공이고 명령어를 찾을 수 없다고 나오는 경우 cmd를 다시 실행해 보시든지 환경변수 설정이 제대로 적용이 됐는지 확인합니다.



저렇게 끄면 환경설정 끝!!! 이클립스 실행 잘될꺼예요~ㅋ

 

감사합니다. 







'스터디 > JAVA' 카테고리의 다른 글

자바 2차원배열 성적구하기  (6) 2018.01.30
자바 반복문 성적내기  (8) 2018.01.30
자바 구구단 로직  (8) 2018.01.30
이클립스 로딩화면 변경하기  (5) 2018.01.22
IT 추천 도서  (10) 2018.01.18

안녕하세요 엘체프 GG 입니다.


itworld에 올라온 추천 도서들 정리 해봤습니다.


1) 개발자가 반드시 알아야 할 자바 성능 튜닝 이야기 : 인사이트


2) 이펙티브 자바 (2판) : 대웅출판사, 인사이트


3) 리팩토링 : 코드 품질을 개선하는 객체지향 사고법 : 한빛미디어


4) 켄트 벡의 구현 패턴 : 읽기 쉬운 코드를 작성하는 77가지 자바 코딩 비법 : 에이콘 출판사


5) Clean Code 클린 코드: 애자일 소프트웨어 장인 정신  : 인사이트, 케이앤피 IT


6) UML 실전에서는 이것만 쓴다: Java 프로그래머를 위한 UML : 인사이트


7) 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴 : 인투북스


8) GoF의 디자인 패턴 (개정판 / 양장) : C++ : 피어슨에듀케이션코리아(PTG)


9) 자바 코딩 이럴 땐 이렇게 : PMD로 배우는 올바른 자바코딩 방법 : 위키북스


10) 성공과 실패를 결정하는 1%의 Java 프로그래밍 원리 : 성안당


11) 프로그래머가 알아야할 97가지 :  지앤선


12) 프로그래머로 산다는 것 : 로드북


13) 나는 개발자다 (전병선) : 와우북스


14) 실용주의 프로그래머 (앤드류 헌트, 데이비드 토머스) : 인사이트


15) 코딩 인터뷰 완전 분석 : 인사이트


16) 코딩 인터뷰 퀘스천 : 영진.com


17) 네이버를 만든 기술, 읽으면서 배운다 자바편 : 위키북스


18) 기초를 다지는 최신 웹 개발 공략서 <제이펍>


19) 버그 없는 안전한 소프트웨어를 위한 CERT 자바 프로그래밍 당신의 코딩 습관은 안전하지 않다 <한빛미디어>


20) 좋은 코딩 나쁜 코딩 - 읽기 쉬운 코드가 좋은 코드다  <한빛미디어>


21) 엔터프라이즈 애플리케이션 아키텍처 패턴 : 엔터프라이즈 애플리케이션 구축을 위한 객체지향 설계의 원리와 기법 

     : 마틴 파울러 저서 <위키북스>


감사합니다.


'스터디 > JAVA' 카테고리의 다른 글

자바 2차원배열 성적구하기  (6) 2018.01.30
자바 반복문 성적내기  (8) 2018.01.30
자바 구구단 로직  (8) 2018.01.30
이클립스 로딩화면 변경하기  (5) 2018.01.22
자바 설치 및 환경 설정  (9) 2018.01.18

+ Recent posts