Nov 21, 2018 - WINDOWS 10 Bash Shell

윈도우즈 10에서 Linux bash shell 사용방법

윈도우즈 10에서는 우분투(Ubuntu bash shell) 리눅스 쉘이 사용 가능합니다.
윈도우에서 리눅스를 사용할 수 있다니 얼마나 행복한 일인가요~ 현재 베타 버전으로 윈도우 10에서 사용이 가능합니다.
사용방법은 비교적 간단합니다.

윈도우즈 설정으로 이동

업데이트 및 복구 > 개발자 모드 선택
제어판 > 프로그램 > 윈도우 기능켜기/끄기 > 윈도우리눅스프로그램(리눅스용윈도우 하위시스템) 선택

Open PowerShell as Administrator and run:

PowerShell

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

윈도우즈의 Microsoft Store에서 다운받아 설치하는 합니다. 윈도우 우분투 이동 후 앱에서 ubuntu를 클릭하여 설치합니다.

루트권한으로 접속하기 위해서는, 만약 루트 권한으로 바꾸려면,

sudo -i

명령어를 사용하면 가능함. 실제 경로는 윈도우즈 최근 버젼에서는!

C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\

이처럼 경로가 좀 더 복잡하게 바뀌었습니다. 만약 숨겨진 폴더를 찾기 어려우면 탐색기 옵션에서 숨겨진 폴더 보기 옵션을 선택하시기 바랍니다. 찾기가 더 간단하며 이를 즐겨찾기에 포함해두시면 더 좋습니다.

JAVA 설치하기

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
apt install openjdk-8-jdk-headless

openjdk 를 설치합니다.

Ubuntu에서 Windows 파일 시스템에 접근

/mnt/d
/mnt/c

/mnt/d/ 와 /mnt/c/ 등으로 실제 윈도우 경로로 접속가능합니다.


참조


Nov 20, 2018 - MBean (JMX) Monitoring and Management

<Resource name="xxx" auth="Container"
     factory="com.zaxxer.hikari.HikariJNDIFactory"
     type="javax.sql.DataSource"
     minimumIdle="30"
     maximumPoolSize="30"
     maxLifetime="3600000"
     connectionTimeout="5000"
     dataSourceClassName="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
     dataSource.cachePrepStmts="true"
     dataSource.prepStmtCacheSize="250"
     dataSource.prepStmtCacheSqlLimit="2048"
     registerMbeans="true"
     dataSource.logger="com.mysql.jdbc.log.StandardLogger"
     dataSource.logSlowQueries="false"
     dataSource.dumpQueriesOnException="false"
     dataSource.user="xxxx"
     dataSource.password="xxxx"
     dataSource.url="jdbc:mysql:/xxxxx:3306/xxx?autoReconnect=true"
     validationQuery="SELECT 1"
     validationInterval="240000"
     testWhileIdle="true" />

초창기 JNDI(tomcat-jdbc)의 경우 JMX(jconsole 등)에 대한 설정에서 자동으로 dbfool 이 보였으나, HikariCP를 적용하면,

registerMbeans=true

를 해야지만, JMX 에서 확인이 가능하다고 합니다. 스프링 부트 2.0 의 default DBCP가 hikariCP 가 되었다고 합니다.

항상 hikariCP의 설명을 보면, 엄청 빠르고 가볍고, 신뢰할 수 있다고 설명합니다. 심지어 “zero-overhead”라며 엄청나게 높은 성능을 강조합니다.

2년전에 도입되었는데, 스프링 부트 2.0 의 default가 되었다는 것은 확실히 빠른다 뭐 그런 의미겠지요.


참조


Nov 5, 2018 - Cannot create JDBC driver of class

새로운 db connection 을 연결했는데, Tomcat에서 datasource/context정보를 못찾을 때. 다음과 같은 오류 내용이 발생했습니다.

Cannot create JDBC driver of class '' for connect URL 'null'

일때. datasource.properties 를 설정하여 처리하도록 작업이 되어있으며, tomcat의 server.xml 을 설정해두었는데, server.xml 파일 태그에 하부 엘리먼트로

<Context>
    <ResourceLink name="xxx" global="xxx" type="javax.sql.DataSource"/>
</Context>

위와같이 설정했어야했는데, context.xml 쪽 이슈는 빼면서 발생했습니다. ResourceLink 를 통해, server.xml 에서 정의하였습니다.

<Resource name="xxx" auth="Container"
     factory="com.zaxxer.hikari.HikariJNDIFactory"
     type="javax.sql.DataSource"
     minimumIdle="30"
     maximumPoolSize="30"
     maxLifetime="3600000"
     connectionTimeout="5000"
     dataSourceClassName="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
     dataSource.cachePrepStmts="true"
     dataSource.prepStmtCacheSize="250"
     dataSource.prepStmtCacheSqlLimit="2048"
     registerMbeans="true"
     dataSource.logger="com.mysql.jdbc.log.StandardLogger"
     dataSource.logSlowQueries="false"
     dataSource.dumpQueriesOnException="false"
     dataSource.user="xxxxx"
     dataSource.password="xxxxx"
     dataSource.url="jdbc:mysql://xxxxx:3306/xxx?autoReconnect=true"
     validationQuery="SELECT 1"
     validationInterval="240000"
     testWhileIdle="true" />

resource에 정의해두었기 때문에 server.xml 에만 정의하면 이슈가 발생합니다.


참조