닭발개발

Ubuntu에 tomcat 설치, jndi로 mariadb 연결, jsp 화면 보기 본문

Linux

Ubuntu에 tomcat 설치, jndi로 mariadb 연결, jsp 화면 보기

D269 2024. 2. 28. 15:11
728x90

 
 
 

 
별거아닌데 개고생했던 일들을 기록해놔야겠다... ㅂㄷㅂㄷ
 
 
 
먼저 Vm ware에 tomcat 깔아줌
sudo로 깔면 무슨일인지 dream 계정 아래에 안되고 root 계정 아래로 되어서 tomcat 사이트 가서 tar 받아옴
 

dream@dream-virtual-machine:~$ ls
apache-tomcat-9.0.86  apache-tomcat-9.0.86.tar.gz  Desktop  Documents  Downloads  Music  Pictures  Public  snap  Templates  Videos
dream@dream-virtual-machine:~$

 
 
 
apache-tomcat-9.0.86.tar.gz 가져와서 압축 풀어주니 apache-tomcat-9.0.86(이하 tomcat)   이렇게 되었고

그리고 mariadb 설치

sudo apt update
sudo apt install mariadb-server

 
보안설정을 해주는데

sudo mysql_secure_installation

여기서 다 엔터치다가 pw 해주는 부분만 신경써서 비번설정해준다.
 
 


그리고 sample db 하나 만들어주기
 

sudo mysql -u root -p

 
 
sample db 설정하고 users 테이블 하나 만들어줌.

CREATE DATABASE mydatabase;
CREATE USER 'root'@'localhost' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON sampledb.* TO 'root'@'localhost';
FLUSH PRIVILEGES;

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(255),
    email VARCHAR(255)
);

INSERT INTO users (username, email) VALUES
    ('user1', 'user1@example.com'),
    ('user2', 'user2@example.com'),
    ('user3', 'user3@example.com');

 
 
 


그리고 tomcat 설정파일 수정
tomcat/conf/context.xml 
나같은 경우는 conf에 있었는데 다른 사람들은 어딨을지 모름 context.xml을 찾아서 하면 됨.
 


    <!-- 다음 라인을 추가하여 JNDI 데이터베이스 연결 설정을 지정합니다. -->
    <Resource name="jdbc/sampledb" auth="Container" type="javax.sql.DataSource"
              maxTotal="100" maxIdle="30" maxWaitMillis="10000"
              username="root" password="1234"
              driverClassName="org.mariadb.jdbc.Driver"
              url="jdbc:mariadb://your_db_host:3306/sampledb"/>

 
<context></context> 안에 위 코드를 넣어주면 됨.
 
 


그리고 sample db를 보여줄 index.jsp를 만들어보자
나는 jndi를 써서 mariadb를 연결해줄 것임
index.jsp를 넣어줄 곳은
tomcat/webapps/wassample/index.jsp
webapp아래에 wassample mkdir 하고 그 아래에 넣어줌
 

<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Sample JSP Page</title>
</head>
<body>
    <h2>Sample Data from MariaDB</h2>
    <%
        try {
            // JNDI를 사용하여 DataSource를 얻어옴
            Context initContext = new InitialContext();
            Context envContext = (Context) initContext.lookup("java:/comp/env");
            DataSource dataSource = (DataSource) envContext.lookup("jdbc/sampledb");

            // DataSource를 사용하여 Connection을 얻어옴
            try (Connection connection = dataSource.getConnection()) {
                // 데이터베이스 쿼리 실행
                String sql = "SELECT * FROM users";
                try (PreparedStatement preparedStatement = connection.prepareStatement(sql);
                     ResultSet resultSet = preparedStatement.executeQuery()) {
                    while (resultSet.next()) {
                        // 결과 출력
                        out.println("ID: " + resultSet.getInt("id") + "<br>");
                        out.println("Username: " + resultSet.getString("username") + "<br>");
                        out.println("Email: " + resultSet.getString("email") + "<br><br>");
                    }
                }
            }
        } catch (Exception e) {
            // 예외 처리
            out.println("Error: " + e.getMessage());
        }
    %>
</body>
</html>

// JNDI를 사용하여 DataSource를 얻어옴
            Context initContext = new InitialContext();
            Context envContext = (Context) initContext.lookup("java:/comp/env");
            DataSource dataSource = (DataSource) envContext.lookup("jdbc/sampledb");
이부분이 중요함.
 
 


여기까지 하고 띄웠는데 에러가 남...
db를 연결할 수 없다는 에러..
 
아 그리고 tomcat 구동하는 방법은
tomcat/bin 아래에 shutdown.sh startup.sh 있음
 
암튼 에러를 고치기 위해서는. 내가 쓴 방법은.
 
구글링 했더니 mariadb 연결하는 jar 를 tomcat/lib 아래에 넣어주래서.
https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.2/

 

Central Repository: org/mariadb/jdbc/mariadb-java-client/2.7.2

repo1.maven.org

 
여기에서 jar 가져와서 넣어줌.
이것도 근데 내 maria 버전하고 맞아야함.
저기 중에서도 source-jar 이런거 안됨.
무조건 그냥 jar...!!!!!!!!!!
 
이거를 lib 아래에 넣어주고.
구동하면...
http://내 아이피:8080/wassample

 
짠...
기쁘다...
....
.....
 
 
 
 

728x90
반응형

'Linux' 카테고리의 다른 글

Ubuntu 부팅에러 initramfs  (0) 2024.02.28
[Linux] RAID, RAID-1, RAID-5  (0) 2023.11.21
[Linux] umask 값  (0) 2023.11.16
[Linux] touch 명령어  (0) 2023.11.16
[Linux] awk와 gawk의 차이점  (0) 2023.11.09