◆Database Connections 설정
JPA 엔티티 자동생성을 사용하기 위해서는 db커넥션을 먼저 설정을 해 줘야 한다.
c:\eGovFrameDev-3.10.0-64bit\dist\ 에 가서 lib 폴더를 만든다.
lib폴더에 db접속 할수 있는 jdbc 드라이버 라이브러리를 카피한다. 데이터베이스는 티베로와 postgresql을 사용할 것이기 때문에 2개의 라이브러리 파일을 카피했다.
jpa 사용하기 위해서 hibernate 라이브러리도 카피했다.
Data Source 탭을 선택한 후에 Database Connections 마우스 오른쪽 버튼을 클릭하여 창이 뜨면 New...을 클릭한다.
PostgreSQL 을 선택후 Next 버튼을 클릭한다.
PostgreSQL JDBC Driver을 선택하면 위에 빨간색으로 x표시가 나타날것이다.
두번째 탭 JAR List를 클릭한다.
디폴트로 있는 postgresql-8.1-404.jdbc2.jar 파일을 Remove JAR/Zip 버튼을 클릭하여 삭제한다.
Add JAR/Zip버튼을 클릭하여 아까 lib 폴더에 복사한 postgresql-42.2.19.jar을 추가한다.
Properties 탭을 선택후 접속정보를 입력한다.
접속정보를 입력후에 Save password를 체크후 Test Connection을 클릭하여 접속여부를 확인한다.
PostgreSQL에 접속한 모습이다.
◆티베로 DB 접속
티베로 DB접속은 티베로가 국산이다 보니 리스트에 없다. 그래서 그냥 Generic JDBC를 선택한다.
Next 버튼 클릭
빨간색 테두리 버튼 클릭
Generic JDBC Driver 선택후 JAR List 탭 선택
Add JAR/Zip 선택하여 tibero6-jdbc.jar 추가
Properties 탭 선택하여 접속 정보 입력
기본 접속 환경이 셋팅 되었습니다.
◆eGov 프로젝트 생성
eGovFrame -> New Web Project 선택
Project name 입력
Group Id 입력
Dynamic Web Module version 버전 3.1 선택
Next 버튼
Finish 버튼 클릭
프로젝트 최상단 여기서는 Invako 에서 마우스 오른쪽 버튼 클릭하여
eGovFrmae Common Component 클릭한다.
시큐리티 기능을 사용하기 위해서 역할/권한관리를 체크한다. 연관된 하위 패키지도 자동으로 같이 선택이 된다.
Next 버튼을 클릭한다.
Finish 버튼을 클릭한다.
시큐리티 기능이 추가 되었다.
postgreSQL 데이터베이스를 사용할 거니까
src/main/resources/egovframework/egovProps/globals.properties
파일을 열어서 Globals.DbType = postgres 로 변경한다.
밑으로 쭉 내려가서
#postgreSQL
Globals.postgres.DriverClassName=org.postgresql.Driver
Globals.postgres.Url=jdbc:postgresql://127.0.0.1:5432/comdb
Globals.postgres.UserName=com
Globals.postgres.Password=com
접속 정보를 변경한다.
postgres db접속 하여 comdb와 사용자를 생성한다.
docker 에 postgres db를 설치한 관계로 docker 명령어로 접속을 한다.
docker exec -it postgres /bin/bash
db 접속 : psql -U postgres
전자정부를 위한 com 사용자 계정을 만든다.
create user com password ‘com’ superuser;
database 를 생성한다.
create database comdb owner com;
사용자와 데이터베이스 소유자를 생성하였으므로 생성된 사용자로 접속을 한다
\c comdb com
Data Source Explorer 탭에 와서 생성된 com user로 접속 정보를 등록한다.
comdb 접속 정보가 등록이 되었다.
톰캣서버에 프로젝트를 등록하여 기동을 해 보자
테이블이 생성이 안되어 있어서 에러가 발생할 것이다.
TomCat v9.0에서 마우스 오른쪽 버튼을 클릭하여 Add and Remove를 선택한다.
invako를 선택후 Add 버트을 클릭하여 추가한다.
Finish 버튼을 클릭한다.
Tomcat v9.0 Server 더블클릭하여 환경셋팅 화면을 호출한다.
Timeouts 시간을 120초로 변경 한다.
Modules 탭을 눌러보면 Root Context가 /invako로 등록 되어 있다 수정하고 싶으면 선택하고 Edit 버튼을 클릭하여 수정한다.
/invako=> / 로 변경 하였다.
저장 버튼을 클릭하여 저장후 서버를 기동 시킨다.
7월 05, 2021 4:59:07 오후 org.apache.coyote.AbstractProtocol start 정보: 프로토콜 핸들러 ["http-nio-8080"]을(를) 시작합니다. 7월 05, 2021 4:59:07 오후 org.apache.catalina.startup.Catalina start 정보: 서버가 [4952] 밀리초 내에 시작되었습니다. 7월 05, 2021 4:59:08 오후 org.apache.catalina.core.ApplicationDispatcher invoke 심각: 서블릿 [jsp]을(를) 위한 Servlet.service() 호출이 예외를 발생시켰습니다. org.apache.jasper.JasperException: 절대 URI인 [http://java.sun.com/jsp/jstl/core]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:54) at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:294) at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:81) at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:251) at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:122) at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:435) at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:493) at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1450) at org.apache.jasper.compiler.Parser.parse(Parser.java:144) at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244) at org.apache.jasper.compiler.ParserController.parse(ParserController.java:105) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:206) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:391) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:367) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:351) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:605) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) |
절대 URI인 [http://java.sun.com/jsp/jstl/core]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다.
에러가 쫘악 발생하였다…
프로젝트 상단에 가서 여기서는 invako 마우스 오른쪽 버튼 클릭하여
Update Project를 클릭한다.
Ok 버튼을 클릭한다.
Maven clean을 한번 해준다.
그리고 나서 Maven install 한다.
메이븐 install이 성공이다.
톰캣서버도 깔끔하게 Clean 해 준다.
pom.xml 파일을 열어서 postgresql로 검색하여 기존 구 버전을 최신 버전으로 변경한다.
<!-- 기존 버전 삭제 --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4.1208</version> </dependency> <!-- 이버전으로 변경 --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.19</version> <scope>runtime</scope> </dependency> |
톰캣서버를 재기동 한다. 로그 메시지가 짤린다.
Preferences. 를 클릭한다.
Console buffer size 가 80000 으로 잡혀 있는데
10억으로 변경하여 준다.
톰캣서버를 재기동한다.
메세지가 안 짤리고 스크롤을 올려도 다 보이게 설정이 되었다.
무슨 내용인지 에러가 엄척 뜬다.
일단 테이블이 없으니 postgres db에 테이블을 생성하겠다.
src/script/ddl/postgres 폴더에 ddl 스크립트가 있다.
cmm_create_postgres.sql 을 실행 한다.
스크립트 파일이 여러개 있는데 중복된 스크립트 제외하고 생성하여 준다.
dml 폴더에서 cmm_insert_postgres.sql 을 실행한다.
DBeaver 툴을 사용하여 생성 하였다.
기본 테이블도 생성하였고 셋팅이 끝났으니 다시 톰캣서버를 기동 시킨다.
기동하다가 다음과 같은 에러가 발생하였다.
[log4j]2021-07-06 08:26:07,435 ERROR [org.springframework.web.servlet.DispatcherServlet] Context initialization failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'egovGroupManageController': Unsatisfied dependency expressed through field 'beanValidator'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springmodules.validation.commons.DefaultBeanValidator' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:586) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:364) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:756) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) ~[spring-webmvc-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:540) ~[spring-webmvc-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) [spring-webmvc-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:171) [spring-webmvc-4.3.25.RELEASE.jar:4.3.25.RELEASE] at javax.servlet.GenericServlet.init(GenericServlet.java:158) [servlet-api.jar:4.0.FR] at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1143) [catalina.jar:9.0.48] at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992) [catalina.jar:9.0.48] at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957) [catalina.jar:9.0.48] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5264) [catalina.jar:9.0.48] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.48] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [catalina.jar:9.0.48] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1388) [catalina.jar:9.0.48] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_162] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.48] at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [?:1.8.0_162] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:921) [catalina.jar:9.0.48] at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835) [catalina.jar:9.0.48] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.48] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [catalina.jar:9.0.48] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1388) [catalina.jar:9.0.48] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_162] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.48] at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [?:1.8.0_162] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:921) [catalina.jar:9.0.48] at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263) [catalina.jar:9.0.48] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.48] at org.apache.catalina.core.StandardService.startInternal(StandardService.java:437) [catalina.jar:9.0.48] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.48] at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:934) [catalina.jar:9.0.48] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.48] at org.apache.catalina.startup.Catalina.start(Catalina.java:772) [catalina.jar:9.0.48] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_162] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_162] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_162] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_162] at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) [bootstrap.jar:9.0.48] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476) [bootstrap.jar:9.0.48] Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springmodules.validation.commons.DefaultBeanValidator' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1486) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1097) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) ~[spring-beans-4.3.25.RELEASE.jar:4.3.25.RELEASE] ... 49 more 7월 06, 2021 8:26:07 오전 org.apache.catalina.core.ApplicationContext log 심각: 서블릿 [dispatcher]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다. |
에러 내용이 보니 DefaultBeanValidator bean 생성이 안되었다는 오류 메세지다.
resource 설정 부분에 자동 생성이 안된것 같다.
src/main/resource/egovframework/spring/com/context-validator.xml 파일이 있는지 확인하고 없으면 파일 생성후 아래와 같은 내용을 복사하여 붙여 넣는다.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"> <!-- Integration Apache Commons Validator by Spring Modules --> <bean id="beanValidator" class="org.springmodules.validation.commons.DefaultBeanValidator"> <property name="validatorFactory" ref="validatorFactory"/> </bean> <bean id="validatorFactory" class="org.springmodules.validation.commons.DefaultValidatorFactory"> <property name="validationConfigLocations"> <list> <!-- 공통기술 --> <value>classpath:/egovframework/validator/com-rules.xml</value> <value>classpath:/egovframework/validator/validator-rules.xml</value> <value>classpath:/egovframework/validator/**/*.xml</value> </list> </property> </bean> </beans> |
톰캣서버를 기동하면 정상적으로 기동이 되었다.
브라우저로 접속 해 본다 : http://localhost:8080
정상적으로 화면이 잘 뜬다
※ 제공되는 초기 데이터에는 테스트용 사용자 정보가 포함되어 있다.(대소문자 유의)
구분 | ID | PW | 비고 |
업무사용자 | TEST1 | rhdxhd12 | 영문으로 공통12 |
webmaster | rhdxhd12 | 영문으로 공통12 | |
일반사용자 | USER | rhdxhd12 | 영문으로 공통12 |
기업사용자 | ENTERPRISE | rhdxhd12 | 영문으로 공통12 |
로그인 탭에서 업무를 선택하고
TEST1/rhdxhd12 입력하여 로그인을 한다.
로그인이 잘된다.
전자정부 최신버전 셋팅이 끝났다.
여기서 제공해 주는 jsp 버전 사용할것 아니고 넥사크로 사용할거라서 시큐리티 부분만 놔두고 소스를 다 삭제 한다
귀찮으니까 넥사크로 환경에 맞게 커스터마이징된 소스를 덮어 씌워서 최신 전자정부 프레임워크 3.1을 사용하자.
그냥 기존 JSP 화면 그대로 사용할거면 그냥 사용해도 무방함
'IT > 프로그램' 카테고리의 다른 글
[전자정부 프레임워크] WildFly 24.0.0.Final 다운로드 설치 (0) | 2024.02.05 |
---|---|
[전자정부 표준프레임워크] JPA + 마이바티스 환경 셋팅 (0) | 2024.02.05 |
스프링부트 설치 (0) | 2024.01.31 |
도커 공유 볼륨 복제 (0) | 2024.01.31 |
도커 허브 이미지 업로드 (0) | 2024.01.31 |