Spring Troubleshooting

java.lang.IllegalStateException: Could not load JDBC driver class [oracle.jdbc.driver.OracleDriver]

Oracle DB를 사용하는 경우 Library를 찾을 수 없어서 발생하는 에러이다.

여기서 JDK8에 맞는 최신 버전인 ojdbc8.jar 를 다운받을 수 있다.

이 파일을 c: 에 복사해놓고 cmd > c:\로 이동 한 후 아래 명령을 수행하면 Maven 환경에 추가할 수 있다.

mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar

DataSource에 MySQL과 Oracle 각각 설정하는 방법

MySQL 연동

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydb?characterEncoding=EUCKR" />
<property name="username" value="abcd" />
<property name="password" value="pppw" />
</bean>
출처: http://houki.tistory.com/41 [아이고 어렵다]

Oracle 연동

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="abcd" />
<property name="password" value="pppw" />
</bean>
출처: http://houki.tistory.com/41 [아이고 어렵다]

@RequestMapping 에서 @PathVariable 로 값을 넘겨받을 때 @ 또는 . 등의 문자로 인해 String이 잘리는 문제

문제 : email 정보(abc@gmail.com)를 query 할 때 제대로 query되지 않았음.
해결 : 아래와 같이 {email} 값을 사용할 때 {email:.+} 의 형식으로 정규표현식을 사용하면 해결됨.

@RequestMapping(value = "user/email/{email:.+}", method = RequestMethod.GET)
public ModelAndView getUserByEmail(@PathVariable("email") String email) {
출처: http://winmargo.tistory.com/category/♨ FrameWork [보리 & 마고]

Establishing SSL connection without server’s identity verification is not recommended……

왠지 모르겠지만 아래와 같은 에러가 발생하였고 찾아보니 간단한 해결책이 있었다.

WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

아래와 같이 autoReconnect=true&useSSL=false 를 붙여준다. 그냥 & 으로 붙이면 예약어의 시작으로 인식할 수 있으므로 &amp; 를 사용한다.

<beans:property name="url" value="jdbc:mysql://localhost:3306/crudtest?characterEncoding=EUCKR&amp;autoReconnect=true&amp;useSSL=false" />
Share