일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Socket is closed
- Sub Bytes
- requestheaderdto
- mapstruct
- mTLS
- Unchecked Exception
- Reading HttpServletRequest Multiple Times
- AfterMapping
- try - with - resources
- Jndi DataSource
- 이중정렬
- NoUniqueBeanDefinitionException
- 데이터 압축
- Request Body 여러 번 사용
- Java Graphql
- Java Singleton
- Java Rest
- Srping MVC
- 바이트 절삭
- tomcat jndi
- WildFly
- Open Close Principal
- java
- 상호 인증
- 개방 폐쇄 원칙
- Checked Exception
- Tomcat DBCP
- Graphql Client
- HandlerMethodArgumentResolver
- graphql
- Today
- Total
목록Others (11)
Developer Sang Guy
프로젝트 패키지 구조 도메인 분리 구조 장점 독립적으로 모듈화 되어 있는 도메인은 각 도메인에서 발생하는 변경 사항에 대한 영향을 최소화 하며 이는 시스템을 확장하고 유지 보수하기 쉽게 한다. 모듈화 (마이크로 서비스 아키텍처) 전환 시 도메인 별로 분리 작업이 용이하다. 단점 작은 규모의 프로젝트에서는 도메인 분리가 오히려 복잡성을 증가시킬 수 있다. 서로 다른 도메인에서 비슷한 기능이 필요한 경우 중복 코드의 가능성이 있다. 계층 분리 구조 장점 프로젝트에 대한 이해도가 낮아도 계층 별로 분리 된 패키지 구조만 보고 어느정도 구조 파악이 가능하다. 각 계층 간 코드 재사용 가능하며, 중복 코드를 최소화하고 일관성을 유지할 수 있다. 단점 계층 구조 아래 여러 도메인이 섞여 있어 특정 도메인 흐름 파악..
쇼피파이 앱 스토어 결제 앱 개발 작업을 진행하면서 서버 측 MTLS(상호 인증) 환경을 구성하게 되었다. 내가 작업한 서버 환경은 WEB - WAS 분리 구조였으며 WEB에서 요청 최초 수신하고 특정 확장자 또는 URI Path만 WAS 로 전달하여 처리하도록 했다. 당시 사용한 미들웨어는 WEB 서버 - Apache 2.4.53, WAS 서버 - Wildfly 26 이였다. Client(쇼피파이)와 MTLS를 하기 위해 우리 측 WEB 서버 구성에 변경이 필요했다. 일단 최종적으로 작성된 설정 파일은 아래와 같다. Apache 2.4.53 인증서 설정 파일(httpd-ssl.conf) . . . #특정 End Point 적용 필요할 경우 아래와 LocationMatch 지시어를 통하여 적용 가능하다...
개발 서버에 키바나 설치 및 방화벽 허용 후 개인 PC에서 접근 시도를 했지만 접근이 되지 않았다. 키바나는 최초 설치 및 실행 후 " netstat -tnlp " 명령어를 통하여 네트워크 상태를 확인해보면 키바나가 어떠한 네트워크 상태를 가지고 실행되어 있는지 확인할 수 있다. 키바나의 기본 포트는 5601으로 따로 변경한 사항이 없다면 " netstat -tnlp | grep 5601 "을 통하여 확인할 수 있다. Local Address가 루프백 ip(127.0.0.1:5601)로 설정된다. Local Address가 루프백 ip로 설정되어 있을 경우 외부 접근이 불가능하며 주로 로컬 시스템에서 실행 중인 서비스나 응용 프로그램이 자체 시스템에 연결할 때 사용된다. 외부에서 접근 가능하게 하기위해 ..
Tomcat context.xml의 Resource 태그에 Apache Tomcat JDBC Pool를 설정하여 여러 애플리케이션을 실행할 경우 각각 애플리케이션 마다 DBCP에 설정한 개별적인 Connection Pool을 생성한다. DBCP 설정에 초기 Connection 개수를 5개로 해놓아도 애플리케이션이 3개가 돌아간다면 독립적인 3개의 Connection Pool이 생성되어 DB에는 15개의 Connection이 연결된다. 이는 GlobalNamingResources, ResourceLink를 사용하여 모든 애플리케이션이 공통의 DBCP 설정을 공유하여 같은 Connection Pool을 사용할수 있도록 한다. 설정 방법 : tomcat/server.xml maxIdle="30" maxWait..
리눅스 환경에서 jstat 명령어 활용하여 GC 모니터링을 할 수 있다. GC 모니터링 명령어 jstat -gcutil -h20 00001(pid) 2000 3000 jstat : GC 상태를 모니터링할 수 있는 도구 (JAVA_HOME/bin에 설치되어 있음) gcutil : gcutil에서 수행 pid : Java 프로그램 프로세스 ID (ps -ef | grep java or 서비스명으로 조회 가능) 2000 : Interval (ms 간격) 3000 : count (실행 횟수, 설정하지 않을 경우 계속) 모니터링 항목 S0 Survivor 0 영역 사용량 S1 Survivor 1 영역 사용량 E Eden 영역 사용량 O Old 영역 사용량 M Metaspace 영역 사용량 CCS Compresse..
어쩌다가 WAS로 Wildfly(이전 JBoss)를 사용하게 되었다. Spring Boot를 사용하여 애플리케이션을 개발 후 서버에 배포하여 Wildfly를 실행하였는데 로그가 정상적으로 출력되지 않는 상황이 발생했다. 애플리케이션에서는 sl4j의 구현체인 logback을 사용하여 로깅 처리를 하도록 개발하였다. 원인을 찾아보니 Wildfly의 경우 내부적으로 Sl4j를 포함하고 있어 자체 Sl4j 라이브러리를 비활성화 하지 않을 경우 애플리케이션 내부에 있는 Sl4j 라이브러리와 설정 충돌이 발생하여 애플리케이션의 로깅 관련 설정(경로, 파일 이름 등)이 무시되는 것으로 확인되었다. Wildfly 애플리케이션 설정 파일(ex. standalone.xml)에 접근하여 아래 설정을 추가하면 Wildfly ..

Mysql Full Text Search는 텍스트 내 공백을 구분 기호로 사용하여 추출 된 토큰을 인덱스로 생성하여 검색에 사용되도록 합니다. 하지만 이는 공백과 같은 구분 기호없이 연속 된 텍스트를 대상으로 조회 할 경우에는 제한이 있습니다. select content from tb_fts_test where match content against ('ser 구마'); 위와 같은 제한은 ngram parser를 사용하여 해결할 수 있습니다. ngram parser 설정 ALTER TABLE `002`.`tb_fts_test` ADD FULLTEXT INDEX `IDX1` (`CONTENT`) WITH PARSER ngram VISIBLE; 설정 후 조회 결과 select content from tb_f..

Mysql에서 제공하는 Full Text Search 기능은 지정한 FullText Index 컬럼에 저장 된 자원을 설정에 맞게 절삭하여 인덱스를 생성하며 해당 인덱스를 활용하여 더 빠르게 조회 결과를 추출한다. 최초 테이블 구성 CONTENT 컬럼 FULLTEXT 인덱스 설정 ALTER TABLE `002`.`tb_fts_test` ADD FULLTEXT INDEX `IDX1` (`CONTENT`) INVISIBLE; CONTENT 컬럼의 Key가 MUL(Multiple Occurences Column)로 변경되었다. MUL이란? 다중 발생 컬럼이라는 의미로 중복 된 값이 발생할 수 있는 인덱스라는 의미로 기본키도 외래키도 아닌 그냥 일반 인덱스 https://dev.mysql.com/doc/refm..

application.properties를 Jar, War 생성 시 제외하고 싶을 경우 pom.xml 태그 안에 아래와 같이 코드 작성하면 된다. JAR org.apache.maven.plugins maven-jar-plugin This is where the exclusion occurs **/application.properties WAR org.apache.maven.plugins maven-war-plugin **/application.properties
1. 브라우저에 http://www.example.com을 입력합니다. 2. 컴퓨터는 www.example.com과 통신할 때 사용해야 하는 IP 주소를 DNS 확인자에게 묻습니다. 3. 컴퓨터가 해당 IP 주소에 연결하고 www.example.com과 통신하고 싶다고 말합니다. 4. 웹서버는 구성을 살펴보고 www.example.com의 콘텐츠 요청으로 무엇을 할지 알아냅니다. 다음 중 하나가 발생할 수 있습니다. - www.example.com은 VirtualHost의 ServerName 또는 ServerAlias로 나열되어 있다면 해당 VirtualHost의 구성을 사용하여 콘텐츠를 제공합니다. - 서버에 VirtualHost가 없다면 httpd.conf의 구성을 사용하여 콘텐츠를 전달합니다. - ..