1. H2는 스프링 부트에서 기본적으로 지원하는 메모리 기반 데이터베이스이다. nodejs의 sqlite와 유사한데 데이터 파일이 로컬에 생성되지는 않는다. 2. 스프링 부트에서 h2를 사용은 간단하다. 예전에는 그냥 pom.xml에 의존성만 추가하면 사실 동작하였다. 하지만 최근의 스프링 부트에서는 그렇게 하면 웹으로 데이터를 볼 수가 없다. 3. 스프링 부트 3.0.1을 기준으로 3-1 최근 버전의 Spring Security는 기본적으로 보안의 이유로 iframe을 지원하지 않는다. 그래서 추가적인 설정이 필요하다. 3-2 우선 일반적으로 하듯 아래처럼 application.yml에 아래처럼 spring h2 설정한다. logging: level: org.springframework.security..
1. kvm은 리눅스 커널에 포함된 type1 hypervisor이다. 그래서 qemu를 통하지 않고 바로 설치해서 쓰는 게 성능에 좋다. 1.0 bridged network를 구성하기가 쉽지 않아서 웬만하면 virtualbox를 사용하는 것을 권장한다. 물론 성능 차이는 느껴진다. 1.0.1 브리지 인터페이스를 만들어주고 가상 네트워크 인터페이스를 매핑해야 한다. 1.0.2 문제는 브리지 인터페이스가 호스트와 동일한 네트워크에 물려 있어야 하는데 별도의 설정이 필요하다. vagrant-libvirt and Bridged Networking – Kevin C. Coram Once I had a way to install virtual machines on my Ubuntu home lab server, ..
'어떻게 자바 클래스를 생성하는 것이 좋은방법일까'에 대한 내용이다. WS는 사용해 볼 기회가 거의 없어 그렇게 경험과 지식이 많지 않음을 이해하기 바란다. 1. 가장 최신 버전의 스프링 부트를 사용한다.현재 3.0.1이 최신이다. 스프링 부트 web service starter에는 spring ws가 포함되어 있는데 JAVA WS 구현이 포함되어 있다 .그래서 최신버전의 경우는 jakarta로 시작하는 ws 패키지를 볼 수 있다. Spring boot 2.6까지는 jaxb 모듈이 jakarta 표준을 따르지 않고 예전 버전을 사용하기 때문에 jaxb 2.3.1버전을 사용하여 javax.xml.bind 같이 javax로 시작하는 패키지를 포함해야 한다. 2. 다시 말하면 스프링에서 사용하는 jakarta..
자바와 같은 static 타입 시스템은 개발할 때 편의성이 높지만 메시지를 주고 받는 것에 있어서는 불편한 점이 많다. 모든 메시지의 타입이 미리 지정이 되어 있어야 컴파일 오류가 생기지 않기 때문이다. nodejs로 개발한 것과 비교하면 차원이 다른 불편함이다. 아래는 자바스크립트(타입스크립트)로 작성된 예약정보를 가지고 오는 구문이다. fetchBooking이 서비스 이름이고 내부적으로는 _fetchBooking을 실행하여 동작한다. request에 들어갈 데이터를 만드는 부분을 보면 _setFetchBooking인데 아주 단순하다. 그냥 자바스크립트 객체를 자유롭게 만들면 된다. 그리고 만들어진 데이터를 _fetchBooking에서 보듯 함수에 넣어 보내면 된다. 더 황당한 부분은 client.ad..
Web Service는 xml이라는 것 때문에 쉽지가 않다. 그리고 자바의 JAXB라이브러리가 XML를 마샬링 할 때 발생하는 오류와 그로 인한 영향 때문에 처음에 세팅하는 것이 굉장히 까다롭다. SOAP Header가 있는 경우는 스프링을 아주 잘하지 않는 이상 며칠을 고생할 수도 있다. 클라이언트 개발은 서버로 보내지는 구문이 정상적인지 확인하는 것이 가장 중요하기 때문에 개발은 아래처럼 하면 된다. 1. 어떤 것이 실행되는 검증된 Request구문을 찾는다. 이것은 서비스를 제공하는 곳에서 같이 제공하는 것이 일반적이다. 2. 현재 자바에서 어떻게 xml로 변환되어 보내지고 있는지를 확인한다. 3. 되는 구문과 안되는 구문의 차이점을 찾아내어 자바에서 보내는 xml 구문을 수정하면서 디버깅 한다. ..
WebService를 가장 잘 구현하고 있는 플렛폼은 자바이다. 현재 Java EE는 가장 최근 spec은 jakarta 10이며 Java WebService의 표준을 여기서 구성하고 있다. 현재 SOAP web service 개발을 위해 여전히 glassfish서버가 개발되고 있으며 glassfish 7 버전은 jakarta 10을 만족하고 있다. 개발 시 glassfish를 사용시 주의 할 점을 적어본다. 1. glassfish 4버전은 JDK1.7을 지원한다. 1.7만 쓰는 것이 좋다. 2. glassfish 5버전은 JDK8을 지원한다. 설명에는 최근 2022년 5.1버전은 11버전을 지원한다고 되어 있는데, 지원하지 않는다. 그냥 1.8을 사용해라 정신 건강에 좋다. 3. glassfish 6버..
프로그래밍을 업으로 20년 이상해왔지만 Web Service를 실제로 서비스에 제대로 사용해 본적이 없다. 스프링에서 RMI도 써봤는데 말이다. 그런데 이미 철이 많이지난 지금에서야 드디어 사용해 볼 기회가 생겼다. 그래서 잘 모른다고 하는 게 정확하다. 잘 모르는 주제에 여기에 이걸 적는 이유는 언제나 그랬듯 나의 형편없는 기억력 때문이다. Web Service는 결과적으로 REST가 하는 것과 동일한 것을 한다. 특징 몇가지를 적어보면 1. 서비스와 데이터의 정의를 위해 xml을 사용한다. 메시지의 구조와 서버의 명세 같은 것들이 모두 xml로 되어 있다. 2. HTTP를 통신기반으로 사용한다는 점에서 REST와 차이가 없다. 3. REST와 다른 점은 endpoint가 외부로 노출되어 있지 않고(노..
트랜잭션은 원자성을 가지는 하나의 task의 단위라고 생각할 수 있다. 트랜잭션은 로직 작성에 아주 중요한 요소이기 때문에 많은 고민이 필요하다. 트랜잭션을 엄격하게 적용하면 모든 것이 좋아 보이기는 하지만 모든 일이 그렇듯 tradeoff가 발생하기 마련이다. 1. 트랜잭션이 길어지면 DB Locking이 발생하기 쉽다. 하나의 트랜잭션이 끝날 때 까지 해당 테이블을 놓지 않는다. 2. DB Locking이 길어지면 DB 컨넥션이 full이 되고 심한 경우는 서버가 죽을 수 있다. 일반적으로 트랜잭션을 거는 이유는 하나의 task의 원자성을 보장하기 위한 것으로, 특정한 작업 중에 관련된 정보가 변경되는 경우 예상하지 못하는 결과가 나올 수 있기 때문이다. 부작용이 있기 때문에 최소한의 단위로 사용하는..
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- mapping
- 스프링부트
- hibernate
- Spring
- 스프링
- 자바
- login
- 설정
- one-to-one
- 로그인
- form
- jsp
- spring boot
- 상속
- crud
- WebMvc
- Security
- 매핑
- Rest
- Angular
- one-to-many
- 하이버네이트
- Validation
- Spring Security
- 외부파일
- RestTemplate
- Many-To-Many
- XML
- MYSQL
- 설정하기