1. getSession(), getSession(true)

 - HttpSession이 존재하면 현재 HttpSession을 반환하고 존재하지 않으면 새로이 세션을 생성합니다


2. getSession(false)

 - HttpSession이 존재하면 현재 HttpSession을 반환하고 존재하지 않으면 새로이 생성하지 않고 그냥 null을 반환합니다


3. 사용 예

HttpSession session = request.getSession();

HttpSession session = request.getSession(true);

위는 동일한 결과를 반환합니다

새로 생성된 놈인지 확인은 session.isNew() 로 가능합니다

그리고 getSession(), getSession(true)는 null 체크없이 바로 getAttribute()를 사용해도 무방하지만, getSession(false)는 null을 리턴할수 있기 때문에 null체크를 해야 합니다.

HttpSession session = request.getSession(false);

if (session != null)

    User user = (User) session.getAttribute("User");

환경

java 1.7.0

maven 3.2.2

단순 참조만 필요한 경우

maven repository 가 없는 로컬 jar 파알을 maven 프로젝트에 추가 하기 위해서는 사설 repository를 만드는 방법도 있지만

다음과 같이 "dependency" 정의 시 scope 노드와 systemPath 노드를 사용하여 프로젝트에 포함된 jar 파일을 지정하여 줄 수 있다.

<dependency>
    <groupId>smack</groupId>
    <artifactId>smack-custom</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/smack-custom.jar</systemPath>
</dependency>

groupId, artifactId, version 은 임의로 정의해도 무방하다

${project.basedir} 는 프로젝트의 ROOT 패스

로컬을 Repository 를 활용하는 방법

위와 같이 처리하는 경우는 문제점이 있다. scrop 의 system 이기 때문에 maven 빌드 시 해당 jar 파일이 포함되지 않는다.

이런 경우는 pom.xml 에 다음과 같이 정의하여 로컬을 repositoy로 활용하는 방법도 있다.

<dependency>
    <groupId>smack</groupId>
    <artifactId>smack-custom</artifactId>
    <version>1.0.0</version>
</dependency>
<repository>
	<id>in-project</id>
	<name>custom jars</name>
	<url>file://${project.basedir}/lib</url>
</repository>

이 때 ${project.basedir}/lib 는 maven 디렉토리 구조를 따르도록 구성해주어야 한다.

위의 예제에서는 디렉토리 및 파일명은 다음과 같이 구성해야 한다.

${project.basedir}/lib/smack/smack-custom/1.0.0/smack-custom-1.0.0.jar

만일 jenkins에서 maven 빌드를 하는 경우라면 다음과 같이 repository를 하나 더 추가해준다.

<repository>
	<id>in-project-jenkins</id>
	<name>custom jars-jenkins</name>
	<url>file://${JENKINS_HOME}/jobs/${JOB_NAME}/workspace/lib</url>
</repository>


'Server Enterprise > Gradle & Maven' 카테고리의 다른 글

[Gradle] cache 삭제  (0) 2021.08.12
[Maven] M2Eclipse project 생성 3  (0) 2015.08.26
[Maven] M2Eclipse project 생성 2  (0) 2015.08.26
[Maven] M2Eclipse project 생성 1  (0) 2015.08.26
[MAVEN] 설치 및 이클립스 연동  (0) 2015.08.17

Spring + ibatis/mybatis 연동에 필요한 JDBC 라이브러리 파일들을 

각 DBMS별로 pom.xml에 등록을 위한 포스팅 해보도록 하겠습니다.


연동하고자 하는 JDBC 라이브러리는 

MySQL, Oracle, MSSQL JDBC를 메이븐을 통해서 받도록 하겠습니다.


먼저 Maven에서 기본적으로 제공해주는 MySQL JDBC 라이브러리를 등록해보도록 하겠습니다.



MySQL JDBC Dependency 등록


1
2
3
4
5
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.31</version>
</dependency>




상단 코드를 작성하고 저장을 해주셨다면 


Properties -> Java Build Path -> Libraries탭에서 Maven Dependencies를 확인 해보시면  

MySQL JDBC가 등록된 것을 확인하실 수 있을겁니다.









ORACLE JDBC Dependency 등록


ojdbc jar 파일을 Maven Repository 사이트에서 검색하여 나오는 dependency로는 라이브러리 다운로드를 받을 수 없습니다.



1
2
3
4
5
<dependency>
    <groupId>ojdbc</groupId>
    <artifactId>ojdbc</artifactId>
    <version>14</version>
</dependency>



"Missing artifact ojdbc:ojdbc:jar:14" 에러가 날 것이므로 

상단 코드 대신 다른 dependency를 등록 해주도록 합니다.



1
2
3
4
5
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
     <version>10.2.0.4.0</version>
</dependency>



위코드를 작성하셔도 아직은 dependency 코드부분에 여전히 

"Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0" 오류가 나타날 것입니다.

<properties> 바로 위에 다음코드를 추가해주세요



1
2
3
4
5
6
<repositories>
    <repository>
        <id>mesir-repo</id>
    </repository>
</repositories>



그럼 오라클의 dependency 오류는 사라질 것이며

다음처럼 ojdbc14.jar 라이브러리가 등록될 것입니다.






MSSQL JDBC Dependency 등록



MSSQL JDBC 연동을 위한 라이브러리인 sqljdbc는 메이븐에서 제공을 하지 않아 

별도로 로컬상의 Maven repository로 연동이 되어야 합니다.


제일먼저 SQL Server용 JDBC 를 다운로드 받도록 합니다.


http://www.microsoft.com/ko-kr/download/details.aspx?id=11774







상단 URL 접속 후 다운로드 버튼을 클릭합니다.







윈도우 기준으로 설명하기에 exe 파일 체크 후 Next버튼을 클릭하여 파일다운로드를 받았습니다.


다운로드 받은 exe파일을 실행을 합니다.







Unzip해준 경로를 보면 sqljdbc_4.0 디렉토리가 생성되어있습니다.

kor 디렉토리를 들어가시면 sqljdbc.jar 파일과 sqljdbc4.jar 파일이 존재하는데 아마 요즘 프로젝트들은

JRE 6.0 이상의 환경에서 작업하므로 sqljdbc4.jar 파일을 등록시켜주면 될겁니다.


아파치 메이븐으로 install 해주기위하여 

하단 사이트에 접속하여 메이븐 파일을 다운로드 받도록 합니다.


http://maven.apache.org/download.cgi








압축을 해제 후 CMD 창을 띄워줍니다.


다운받아서 해제한 apache-maven의 bin디렉토리까지 이동을 합니다.






다음 명령어를 실행합니다.


1
mvn install:install-file -Dfile=D:\sqljdbc_4.0\kor\sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom
---
[INFO] Installing D:\sqljdbc_4.0\kor\sqljdbc4.jar to C:\Users\jgh\.m2\repository
\com\microsoft\sqlserver\sqljdbc4\4.0\sqljdbc4-4.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.960 s
[INFO] Finished at: 2014-11-14T01:23:05+09:00
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------



로그가 출력되면 정상 설치 된것입니다.

그럼 MSSQL JDBC 라이브러리 Dependency를 등록해보도록 하겠습니다.



1
2
3
4
5
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>



위와같이 pom.xml에 등록해주면 오류없이 정상적으로 라이브러리 추가가 된 것을 확인 할 수 있습니다.









MySQL, Oracle, MSSQL JDBC 라이브러리 파일을 pom.xml에 등록하는 방법에 대하여 포스팅해보았습니다.


다음장은 spring3 + mybatis 연동설정에 대하여 포스팅하도록 하겠습니다.



mysql 에서 A 서버의 mysql에서 B 서버의 mysql의 테이블을 참조하여 쓰고 싶은 경우

federated 라는 기능을 사용해야 한다.


해당 기능 사용법은 다음과 같다.


1. federated Plugin 설치

mysql 접속 후 아래 명령어 수행

>> install plugin federated soname 'ha_federated.so'


federated 설치 확인은 다음 명령어 수행

>> show engines;


2. my.cnf 파일 수정

/etc/my.cnf 파일의 [mysqld] 그룹에 다음 내용 추가


federated


mysql 데몬 재시작

>> sudo service mysql restart


3. federated 기능 Enable 확인

federated 기능 Enable 확인 명령어 수행

>> show engines;


Federated Engine의 Support 항목이 Yes로 되어 있음 정상


4. federated Table 생성


 CREATE TABLE [테이블 명]

(

     FIELD 데이터 타입

     Federate될 Table과 동일한 데이터 타입으로 세팅

)

ENGINE=FEDERATED

CONNECTION='mysql://사용자:비밀번호@호스트:포트/DB명/테이블명';


이클립스에서 톰캣서버 추가 시 Server name이 비활성화 되는 문제가 있는 경우

1. 이클립스를 닫는다.

2. {workspace-directory}/.metadata/.plugins/org.eclipse.core.runtime/.settings 폴더로 이동

3. org.eclipse.wst.server.core.prefs, org.eclipse.jst.server.tomcat.core.prefs 폴더 삭제

4. 이클립스 재실행

'IDE > Eclipse' 카테고리의 다른 글

[최적화] Eclipse 성능개선  (0) 2018.06.19
[Theme] How to Eclipse theme MoonRise Change  (0) 2016.07.13
[Cloud] 클라우드 ide > Github 연결  (0) 2016.01.09
[IDE] Eclipse 단축키  (0) 2015.12.19
[eclipse] STS 설정  (0) 2015.09.03

SQL Developer

SQL Developer 툴은 오라클에서 오라클용툴로 만든 툴입니다. 
SQL Developer 툴을의 제일 큰 장점은 오라클 접속후 플랜을 봣을때 그 상세함은 이루 말할수 없을정도였습니다.
mysql 에 대해서도 JDBC 드라이버를 통해서 연결이 가능하며 주요 툴로 사용하고 있습니다. 
현재 4.x 버전까지 나와잇는 상태이고, 저는 SQL Developer 3.2버전을 사용하고 있는데 이는 4.x 부터는 너무 툴이 무거워졌기 때문입니다. 툴은 역시 가벼움이죠. !!

SQL Developer 3.2 다운로드 : http://www.oracle.com

mysql 연결 설정방법
1. SQL Developer 파일 다운로드
위의 다운로드 링크를 클릭하여 파일( Oracle SQL Developer 3.2.2 ) 다운로드 후 압축해제

2. mysql 연결 라이브러리를 다운로드 
mysql-connector-java-gpl-5.x.xx.mis 파일을 설치하면 다음의 경로에 jar 파일이 생성됩니다. 
위치 : C:\Program Files\MySQL\MySQL Connector J\mysql-connector-java-5.x.xx-bin.jar

3. SQL Developer 설정
1번에서 다운받은 SQL Developer 실행후
도구 > 환경설정 > 데이터베이스 > 타사 JDBC 드라이버에 mysql-connector-java-5.x.xx-bin.jar 파일을 추가

4. 데이터베이스 접속 선택시 MySql 을 통해서 접속


.NET Framework가 설치되어 있지 않거나 기타 다른 시스템의 환경적인 요인으로 인하여 MySQL의 Installer가 정상적으로 동작하지 않는 경우가 있습니다. 이러한 경우 다음과 같이 MySQL을 수동을 설치할 수 있습니다.


MySQL 수동 설치 파일 다운로드 받기

http://dev.mysql.com/downloads/mysql/에서 MySQL의 압축 파일 버전을 다운로드 받기 위한 링크를 클릭합니다.


2015-04-16_13-34-55.png



페이지가 이동되면 화면 하단부의 "No Thanks, just start my download." 링크를 클릭하여 압축파일을 다운로드 받도록 합시다.


2015-04-16_13-38-26.png





다운받은 파일의 압축 해제

다운로드 받은 파일을 C 드라이브 안에 압축 해제 합니다.


2015-04-16_15-57-47.png 





MySQL 실행 경로 환경 변수 설정하기

압축 해제한 폴더 안에 존재하는 bin 폴더가 MySQL의 실행 경로 입니다. 이 경로를 윈도우의 환경변수에 등록해야 합니다.

바탕화면의 내 PC 아이콘을 마우스 우클릭하여 "속성"을 선택합니다.


2015-04-16_16-05-05.png 




시스템 화면의 왼쪽 메뉴에서 "고급 시스템 설정" 항목을 클릭합니다.


2015-04-16_16-10-35.png 




"환경변수" 버튼을 누릅니다.


2015-04-16_16-10-54.png 




환경변수 하단부의 "시스템 변수" 항목에서 Path를 찾아 "편집"버튼을 누릅니다.


2015-04-16_16-11-22.png 




편집 창이 나타나면, 변수 값란에 입력되어 있는 기존의 값 뒤에 MySQL의 실행 폴더 경로를 추가해 주어야 합니다.

기존의 값 맨 뒤에 세미콜론(;)을 입력하고 "MySQL의 압축 해제 경로\bin"을 추가해 주어야 합니다. 여기서는 "C:\mysql-5.6.24-winx64\bin" 이라고 추가합니다.


2015-04-16_16-11-49.png 



설정이 완료되면 모든 화면의 "확인"버튼을 누르고 창을 닫습니다.



MySQL 설정파일 수정하기

MySQL의 압축을 해제한 폴더 안에는 "my-default.ini" 라는 파일이 있습니다. 이 파일이 MySQL의 환경 설정 파일의 기본 템플릿 입니다.

이 파일을 마우스 우클릭 하여 "편집"메뉴를 선택합니다.


2015-04-16_16-13-13.png 



"my-default.ini" 파일이 열리면 아래와 같이 표시된 부분이 있습니다.


2015-04-16_16-13-46.png 



이 부분에서 "#"을 삭제해서 주석을 해제하고 다음과 같이 MySQL의 경로를 작성합니다.


basedir = C:/mysql-5.6.24-winx64

datadir = C:/mysql-5.6.24-winx64/data

port = 3306



수정 결과는 다음과 같습니다.


2015-04-16_16-14-50.png 




이제 메모장의 "파일 > 다른이름으로 저장" 메뉴를 선택합니다.


2015-04-16_16-15-31.png 



파일 이름을 "my.ini"로 지정합니다.


2015-04-16_16-15-55.png 




MySQL을 윈도우 서비스로 등록하기

윈도우가 부팅될 때 마다 MySQL이 자동으로 구동되도록 하기 위해서는 윈도우에 서비스 형태로 등록해야 합니다. 이 작업을 위해서 명령프롬프트를 관리자 권한으로 실행합니다.


2015-04-16_16-16-41.png 



프롬프트 안에서 MySQL이 설치된 폴더로 접근한 후에 mysqld --install 이라고 명령어를 입력합니다. 아래의 화면 갈무리와 같이 성공했다는 메시지가 표시되면 윈도우를 재부팅 합니다.


2015-04-16_16-17-49.png 





MySQL 접속 및 Root 비밀번호 설정하기

윈도우를 재부팅한 후 명령프롬프트를 실행하고 다음의 명령어를 입력하면 MySQL에 접속할 수 있습니다. root 계정의 초기 비밀번호는 설정되어 있지 않기 때문에 비밀번호를 묻는 단계에서는 아무런 값도 입력하지 않고 엔터키를 누릅니다.


mysql -uroot -p


2015-04-16_16-24-51.png 




MySQL에 접속이 완료되면 root의 비밀번호를 설정하기 위하여 다음의 명령어들을 순차적으로 입력합니다.


use mysql;

update user set password=password('설정할 비밀번호') where user='root';

flush privileges;



2015-04-16_16-26-27.png 


1. 설치

STS는 스피링을 사용하는 개발자에게 특화된 Eclipse 기반의 IDE이다.

다운로드는 아래 링크를 통해 받을 수 있다.


Spring Boot 프로젝트는 Spring의 경량화 버전이다.

기본적으로 Tomcat을 내장하고 있어 프로젝트를 구동하기 편하다.


https://spring.io/tools


2. 프로젝트 만들기


Package Explorer에서 오른쪽 버튼을 클릭하고

New - Sping Starer Project를 선택한다.




선택하면 아래와 같은 팝업이 뜨는데

Name과 Artifact는 프로젝트를 유니크하게 구별하는 식별자이다.


입맛에 맞게 설정해주자.





다음은 이 프로젝트에서 사용할 모듈설정 화면이다.

여기서는 Web 정도만 선택한다.

추후 Pom.xml에서 추가할 수 있다.




처음 프로젝트를 생성하면 프로젝트 구조는 아래와 같다.



여기서 Controller를 만들기 위해

Controller Package를 만들고 그 아래 HelloWorldContoller Class를 하나 만든 다음

아래와 같이 코딩하자.


중요한 점은 public class위에 

@RestController 를 달았다는 것과


public String HelloWolrd위에 

@RequestMapping 를 달았다는 것이다.


이 2가지 Annotation은 

컨트롤러를 구성하는데 꼭 필요한 요소로


Controller로 쓰는 클래스위에는

Controller는 URL을 입력했을 떄 처음 그 요청을 받아 처리해주는 로직을 담은

클래스 정도로 생각하면 된다.


아래와 같이 RestController Annotation을 붙여주고

URL을 매핑 시켜주는 RequstMapping Annotation을 통해

그 내부를 구성한다.



이렇게 한다음 Rus As - Spring boot App을 눌러 프로젝트를 구동시키고

웹 브라우져로 위에 적은 URL대로 Request를 해보면

아래와 같은 메시지가 뜨는 것을 볼수 있다.


리턴은 Vo로도 가능하다.

Vo를 리턴하면 Json형식으로 리턴된다.




Problem

Cannot login to oracle using "sqlplus / as sysdba" 라는 메세지가 뜨면서 접속이 되지 않습니다.

 

Solution

1. SQLPLUS를 통해 sysdba 접속 시 에러 발생

1sqlplus / as sysdba
2SQL*Plus: Release 11.1.0.7.0 - Production on 목 3월 28 11:33:29 2013
3Copyright (c) 1982, 2008, Oracle.  All rights reserved.
4ERROR:
5ORA-12560: TNS:프로토콜 어댑터 오류
6Enter user-name:

 

2. 해결책

- ora_dba 그룹에 접속자가 속해 있는지 확인

 

- sqlnet 파일 수정 ( 경로 : /NETWORK/ADMIN )

1#SQLNET.AUTHENTICATION_SERVICES = (NONE) // sysdba 접속 시 패스워드를 묻는다.
2SQLNET.AUTHENTICATION_SERVICES = (NTS) // sysdba 접속 시 패스워드 없이 접속 가능
3SQLNET.INBOUND_CONNECT_TIMEOUT = 0

 

- oracle 서비스와 Listener 재 시작

 

- ORACLE_SID 세팅

1SET ORACLE_SID=TNS이름

 

- 접속시도

1C:\>sqlplus / as sysdba
2SQL*Plus: Release 11.1.0.7.0 - Production on 목 3월 28 11:33:29 2013
3Copyright (c) 1982, 2008, Oracle. All rights reserved.
4Connected to:
5Oracle Database 11g Release 11.1.0.7.0 - 64bit Production
6SQL>


오일러 프로젝트(Project Euler)


수학적인 문제들을 프로그래밍으로 해결하는 퀴즈 풀이 사이트


Synap에서 한글로 번역한 사이트를 제공하고 있다. 본 사이트의 모든 문제가 번역되어 있진 않지만 현재 100여개의 문제가 번역되어 있고 많은 사람들이 사용하고 있다. 자신이 원하는 언어로 문제를 풀고 답만 입력하면 된다. 입력한 답이 정답일 경우 다른 사람들이 문제를 푼 코드들을 볼 수 있다.


(Project Euler @kr : http://euler.synap.co.kr/)


(Project Euler @net : https://projecteuler.net/)





알고 스팟(Algospot)


프로그래밍 대회에서 배우는 '알고리즘 문제해결 전략'의 저자 구종만씨가 운영하는 사이트


C, Java, Python, C++, Scala, Javascript, Rust, Haskell, Go등 다양한 언어로 문제 풀이가 가능하며 문제별 채점결과(속도, 크기) 랭킹을 제공해준다. 다양한 알고리즘 대회의 양질의 문제들을 제공해 주고 있다. 알고스팟 캘린더에는 알고리즘 대회 스케쥴을 제공해 주고 있다. 국내 알고리즘 사이트 중에서는 Dovelet과 함께 양강체제를 구축하고 있다. 코딩 테스트를 준비하고 있다면 반드시 풀어봐야 할 사이트.


(Algospot : https://algospot.com/)




더블릿(Dovelet)


알고 스팟과 양대산맥을 이루는 알고리즘 트레이닝 사이트


C, Java, Python, C++, Perl로 문제 풀이가 가능하다. 1~30계단, 옥상으로 단계를 구분해서 운영하고 있는데 무료로 1~3계단, 옥상 레벨의 문제를 풀 수가 있다. 정회원이 되려면 소정의 금액을 지불해야 한다. 랭킹 30위 안에 들면 1년 이상 무료로 이용이 가능하다. 코딩 테스트를 준비하고 있다면 반드시 풀어봐야 할 사이트.


(Dobelet : http://59.23.113.171/index.php)




코딜리티(Codility)


해외에서 정말 유명한 알고리즘 문제 사이트


문제가 영어로 제공되어 해석의 어려움이 있을 수는 있지만 Web에서 코드를 작성하고 컴파일 결과를 확인할 수 있는 장점이 있다. 코드를 제출하게 되면 시간 복잡도와 공간 복잡도를 서버에서 채점하고 등급을 알려준다. 많은 언어를 제공하며 완성도가 높은 사이트이다. 마찬가지로 코딩 테스트를 준비하고 있다면 반드시 풀어봐야 할 사이트.


(Codility : https://codility.com/)




코딩도장


운동 도장에 매일 다니며 수련하는 것 같이 프로그래밍 문제풀이를 통해서 코딩 실력을 수련하자는 목표로 만들어진 사이트


구글, 페이스북등 유명 해외 기업과 국내 유명 기업의 코딩 문제들도 수록되어 있다. 채점은 되지 않지만 풀이를 댓글로 작성할 수 있고 다른 사람들의 풀이도 볼 수 있다.


(코딩도장 : http://codingdojang.com/)

+ Recent posts