[질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 스프링 3.0 이상으로 프로젝트를 만들어서 h2 데이터베이스도 그에 맞는 최신 버전으로 다운 받아 설치하였는데요. jdbc:h2:~/jpashop로 최초 한번 연결 후 (여기까진 성공) 끊고, jdbc:h2:tcp:// localhost/~/jpashop 으로 연결하면 이 오류가 뜹니다. h2 데이터베이스는 켜둔 상태입니다. spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 다른 오류들은 차근차근 해결했는데 h2도 정상 작동하고 다른 코드들도 다 확인하고 소스 코드 복붙도 해보고(오타 방지) 했으나 다음과 같이 오류가 발생합니다. 이 테스트 말고는 다 정상적으로 테스트가 돌아가는데 DB랑 연결이 안되는건지 문의드립니다. java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection at rrrr m._rrrr_m.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:107) at rrrr m._rrrr_m.service.MemberService.validateDuplicateMember(MemberService.java:31) at rrrr m._rrrr_m.service.MemberService.join(MemberService.java:25) at rrrr m._rrrr_m.service.MemberServiceIntegrationTest.중복_회원_예외(MemberServiceIntegrationTest.java:46) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:84) at rrrr m._rrrr_m.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:113) at rrrr m._rrrr_m.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:95) ... 6 more Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database may be already in use: "C:/Users/computer/test.mv.db". Possible solutions: close all other connection(s); use the server mode [90020-224] at org.h2.message.DbException.getJdbcSQLException(DbException.java:690) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) at org.h2.message.DbException.get(DbException.java:212) at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:165) at org.h2.mvstore.db.Store.<init>(Store.java:142) at org.h2.engine.Database.<init>(Database.java:326) at org.h2.engine.Engine.openSession(Engine.java:92) at org.h2.engine.Engine.openSession(Engine.java:222) at org.h2.engine.Engine.createSession(Engine.java:201) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125) at org.h2.Driver.connect(Driver.java:59) at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:550) at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:98) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:111) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ... 8 more Caused by: org.h2.mvstore.MVStoreException: The file is locked: C:/Users/computer/test.mv.db [2.2.224/7] at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996) at org.h2.mvstore.SingleFileStore.lockFileChannel(SingleFileStore.java:143) at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:117) at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:81) at org.h2.mvstore.MVStore.<init>(MVStore.java:286) at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2035) at org.h2.mvstore.db.Store.<init>(Store.java:133) ... 25 more 2024-06-14T23:13:01.731+09:00 INFO 18164 --- [9rrrr_m] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection at rrrr m._rrrr_m.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:107) at rrrr m._rrrr_m.service.MemberService.validateDuplicateMember(MemberService.java:31) at rrrr m._rrrr_m.service.MemberService.join(MemberService.java:25) at rrrr m._rrrr_m.service.MemberServiceIntegrationTest.회원가입(MemberServiceIntegrationTest.java:29) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:84) at rrrr m._rrrr_m.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:113) at rrrr m._rrrr_m.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:95) ... 6 more Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database may be already in use: "C:/Users/computer/test.mv.db". Possible solutions: close all other connection(s); use the server mode [90020-224] at org.h2.message.DbException.getJdbcSQLException(DbException.java:690) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) at org.h2.message.DbException.get(DbException.java:212) at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:165) at org.h2.mvstore.db.Store.<init>(Store.java:142) at org.h2.engine.Database.<init>(Database.java:326) at org.h2.engine.Engine.openSession(Engine.java:92) at org.h2.engine.Engine.openSession(Engine.java:222) at org.h2.engine.Engine.createSession(Engine.java:201) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125) at org.h2.Driver.connect(Driver.java:59) at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:550) at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:98) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:111) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ... 8 more Caused by: org.h2.mvstore.MVStoreException: The file is locked: C:/Users/computer/test.mv.db [2.2.224/7] at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996) at org.h2.mvstore.SingleFileStore.lockFileChannel(SingleFileStore.java:143) at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:117) at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:81) at org.h2.mvstore.MVStore.<init>(MVStore.java:286) at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2035) at org.h2.mvstore.db.Store.<init>(Store.java:133) ... 25 more Process finished with exit code -1
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 실무에선 groups보단 폼 데이터 전달을 위해 별도의 객체를 만드는 걸 선호한다고 이해했습니다. 그런데 pdf에 있는 다음 내용에 대해 더 궁금한 점이 있습니다. "Item 도메인 객체를 폼 전달 데이터로 사용하고, 그대로 쭉 넘기면 편리하겠지만, 앞에서 설명한 것과 같이 실무에서 는 Item 의 데이터만 넘어오는 것이 아니라 무수한 추가 데이터가 넘어온다. 그리고 더 나아가서 Item 을 생성하는데 필요한 추가 데이터를 데이터베이스나 다른 곳에서 찾아와야 할 수도 있다." Item을 생성하는 데에 필요한 추가 데이터를 데이터베이스나 다른 곳에서 찾아와야 할 수 있기 때문에 폼 전달을 위한 별도의 객체를 만드는 방법이 좋다는 의미로 써져 있는 거 맞나요? 그런데 Item을 생성할 때 필요한 데이터들을 데이터베이스나 다른 곳에서 찾아와야 한다고 하면, 폼 전달 객체를 별도로 만들더라도 컨트롤러에선 Item 객체를 만들어야 하니, DB에서 추가 데이터를 가져와야 하는 건 마찬가지처럼 느껴지는데, DB에서 추가 데이터를 가져오는 것 때문에 폼 전달 객체를 별도로 만드는 게 더 좋다는 이유가 아직 잘 이해가 안 됩니다.(등록 폼과 수정 폼이 다르다는 측면에서는 폼 전달 객체를 만드는 것의 장점이 충분하다고 이해하고 있습니다.) 이 부분 제가 이해를 제대로 못 하고 있는 것 같습니다. 이 부분에 대해 조금만 더 자세히 알려주실 수 있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 실행은 잘되는데 이런개 너무 많이뜨는데 제가 뭐 잘못만진건가요 ?
안녕하세요, 좋은 강의 제공해주셔서 감사합니다. FilterChainProxy 타입의 빈을 등록했는데 왜 CompositeFilterChainProxy 타입의 빈이 나오는 궁금합니다. 2. FilterChainProxy 도 여러 개가 존재할 수 있는 걸로 알고, SecurityFilterChain 도 여러 개 존재할 수 있는 것을 배웠습니다. 요청에 따라 FilterChainProxy 와 SecurityFilterChain 을 선택하는 부분에 대한 설명이 없는 것 같은데 맞나요? 이것까지 이해하는건 어렵긴 합니다..
검색하니깐 tasks.register("prepareKotlinBuildScriptModel"){} 추가 작성하면 된다던데 그렇게 써도 또 오류가 뜹니다. 프로젝트 생성했을땐 저 오류가 뜨는데 main 이랑 빌드 실행 했을때는 별다른 오류는 안뜨는데 무시하고 계속 진행해도 될까요..? 아니면 해결을 해야하나요?
rememberMe 의 흐름상 자동 로그인을 하는 것으로 보이는데 강의 들으면서 나름 커스텀하여 로그인 창이 뜰때 아이디만 저장하기 기능을 추가하고 싶은데 어떻게 해야할까요? 1. 로그인창 a. 처음에는 세션, 쿠키도 없으니 빈칸 로그인 성공이후 로그인 정보의 아이디값을 쿠키 에 넣는다. 로그아웃이후 쿠키가 남아있으면 아이디 란에 아이디를 넣는다. 를 하고 싶어용
현재 java11 사용중이고 스프링부트는 최신버전에 맞춰서 3.3.0 과 java17로 선택해서 생성했습니다. 오류가 발생했고 라고 떴습니다. 라고 권장하는 것 같은데 그럼 제가 java17을 받아야하는건가요? 아니면 프로젝트 java를 11로 변경하고 스프링부트 버전도 변경하면 되는 것인가요? 앞으로 더 길게 봤을때를 위해서 그냥 java17을 받는게 나을까요? 프로젝트 생성할 때 항상 자바버전으로 오류가 발생하는 것 같은데 뭐가 더 나은건지 기준을 아직 잘 모르겠어서 항상 고민이 되는 것 같습니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] //@Component public class WebServerCustomizer implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> { 주석 해놓고 아래 포스트맨도 accept 설정 제대로 했는데 계속 json이 아니라 html 결과 값이 나옵니다ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요. 세션에 대해 공부하다가 궁금한 점이 생겨 질문드립니다. 웹의 경우 브라우저에 있는 쿠키저장소에 세션아이디를 저장하고 그것을 request에 함께 보내는 방식이 세션 방식이라 이해하였습니다. 그런데 로그인 기능이 있는 모바일 어플을 개발 한다고 했을때도 이와 동일한 세션방식을 사용할 수 있나요? 모바일 어플에 쿠키 저장소가 있고 동일하게 request를 보낼때 마다 저장된 세션아이디를 보낸다면 문제가 없겠지만 모바일에 쿠키저장소가 없다면 어떻게 로그인을 처리해야 하나요? 클라이언트에 따로 쿠키 저장소가 아닌 다른 저장소를 직접 구현하여 요청시 마다 세션 아이디를 보내는 로직을 구현 하면 될까요?
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
저희 학습내용으로 보면 private Integer age; 는 테이블의 age int, 와 같아서 어노테이션 안써도 된다고 하셨는데 그럼 name 같은경우도 테이블의 그냥 컬럼명과 타입 똑같은 조건인데 왜 어노테이션쓰고 nullable = false, length = 25라고 해야하나요?? 그리고 한가지만 더 질문 드릴게요! 저는 서버 실행하면 콘솔쪽에 따로 쿼리가 안찍히던데 왜그럴까요?? 이상은 없는데 hibernate가 인식이 안되서 그런건지 콘솔에 쿼리가 안찍히네요ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의를 보고 코딩을 해서 실행을 해보니깐 싱글톤 빈을 사용함에도 불구하고 로컬 쓰레드 환경처럼 서로 값에 영향이 가지 않는 예제와 다른 결과가 나왔습니다. 혹시나 제가 잘못 코딩을 하여 이런 결과가 나온 것인지 소스 코드를 이용해서 FieldLogTrace를 사용하여 예제를 실행해보았지만, 결과는 똑같이 서로 영향을 미치지 않는 결과가 나왔습니다. 스프링이 최신 버전(테스트 기준 3.3.0)으로 업데이트가 되면서 이와 관련해서 따로 바뀐 부분이 있는지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용]말 그대로입니다. 띄어쓰기 두 번 규칙 잘 적용했는데 튕기는 현상이 발생합니다. 어떤 것이 문제일까요?? yml을 다음 아래와 같이 복붙했습니다. # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] #추가 - job_name: "spring-actuator" metrics_path: '/actuator/prometheus' scrape_interval: 1s static_configs: - targets: [' localhost:8080 ']
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 회원등록은 되는데 회원목록누르면 white label 뜹니다 ㅜㅡ https://drive.google.com/file/d/19-IiuPizWAnOi4x22F5cRLRD_8pE-19F/view?usp=drive_link 링크입니다!
@WebServlet(name = "requestParamServlet", urlPatterns = "/request-param") public class RequestParamServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); System.out.println("username = " + username); String age = request.getParameter("age"); System.out.println("age = " + age); request.getParameterNames().asIterator() .forEachRemaining(paramName -> System.out.println(paramName + ": " + request.getParameter(paramName))); String[] parameterValues = request.getParameterValues("username"); for (String parameterValue : parameterValues) { System.out.println("parameterValue = " + parameterValue); } } } http://localhost:8080/request-param?username=kim&age=20 http://localhost:8080/request-param?username=kim&age=20&username=park 으로 하면 오류 없이 잘 넘어가는데, http://localhost:8080/request-param 으로 하면 왜 오류가 나는 건가요? Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Thu Jun 13 22:28:48 KST 2024 There was an unexpected error (type=Internal Server Error, status=500). 여러 번 시도해봤을 때, //코드3 String[] parameterValues = request.getParameterValues("username"); for (String parameterValue : parameterValues) { System.out.println("parameterValue = " + parameterValue); } 질문1: 코드3 때문에 오류가 나는 거 같은데 왜 오류가 나는지 이유를 모르겠습니다. http://localhost:8080/request-param 은 username의 값을 꺼내는 건데, username이 없어서 null이 나올 거고, 그걸 iterator로 돌리면 결국 그냥 null값이 나와야하지 않나 하고 생각했습니다! //코드1 String username = request.getParameter("username"); System.out.println("username = " + username); String age = request.getParameter("age"); System.out.println("age = " + age); 이 코드1는 null값을 뱉어내고 //코드2 request.getParameterNames().asIterator() .forEachRemaining(paramName -> System.out.println(paramName + ": " + request.getParameter(paramName))); 질문2: http://localhost:8080/request-param 로 들어가면, 코드2는 콘솔에 아무것도 프린트 되어있지 않습니다. null값이 나와있을 거라 기대했는데 아니었습니다. 왜 이런 건가요??