diff --git a/aws-serverless-java-container-core/pom.xml b/aws-serverless-java-container-core/pom.xml index 096d79a07..dde46f996 100644 --- a/aws-serverless-java-container-core/pom.xml +++ b/aws-serverless-java-container-core/pom.xml @@ -6,12 +6,12 @@ AWS Serverless Java container support - Core Allows Java applications written for a servlet container to run in AWS Lambda https://aws.amazon.com/lambda - 2.0.2 + 2.0.4-SNAPSHOT com.amazonaws.serverless aws-serverless-java-container - 2.0.2 + 2.0.4-SNAPSHOT .. @@ -60,7 +60,7 @@ org.springframework.security spring-security-web - 6.2.4 + 6.2.5 test diff --git a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java index 17d04a57c..fe514e65d 100644 --- a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java +++ b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java @@ -437,8 +437,10 @@ public String getRemoteAddr() { if (request.getRequestContext() == null || request.getRequestContext().getIdentity() == null) { return "127.0.0.1"; } - if (request.getRequestContext().getElb() != null) { - return request.getHeaders().get(CLIENT_IP_HEADER); + if (request.getRequestSource().equals(RequestSource.ALB)) { + return Objects.nonNull(request.getHeaders()) ? + request.getHeaders().get(CLIENT_IP_HEADER) : + request.getMultiValueHeaders().getFirst(CLIENT_IP_HEADER); } return request.getRequestContext().getIdentity().getSourceIp(); } @@ -446,14 +448,16 @@ public String getRemoteAddr() { @Override public String getRemoteHost() { - if (Objects.nonNull(request.getRequestContext().getElb())) { - String hostHeader = request.getHeaders().get(HttpHeaders.HOST); - - // the host header has the form host:port, so we split the string to get the host part - return Arrays.asList(hostHeader.split(":")).get(0); + String hostHeader; + if (request.getRequestSource().equals(RequestSource.ALB)) { + hostHeader = Objects.nonNull(request.getHeaders()) ? + request.getHeaders().get(HttpHeaders.HOST) : + request.getMultiValueHeaders().getFirst(HttpHeaders.HOST); + } else { + hostHeader = request.getMultiValueHeaders().getFirst(HttpHeaders.HOST); } - - return request.getMultiValueHeaders().getFirst(HttpHeaders.HOST); + // the host header has the form host:port, so we split the string to get the host part + return Arrays.asList(hostHeader.split(":")).get(0); } @@ -483,8 +487,11 @@ public RequestDispatcher getRequestDispatcher(String s) { @Override public int getRemotePort() { - if (Objects.nonNull(request.getRequestContext().getElb())) { - String portHeader = request.getHeaders().get(PORT_HEADER_NAME); + if (request.getRequestSource().equals(RequestSource.ALB)) { + String portHeader; + portHeader = Objects.nonNull(request.getHeaders()) ? + request.getHeaders().get(PORT_HEADER_NAME) : + request.getMultiValueHeaders().getFirst(PORT_HEADER_NAME); if (Objects.nonNull(portHeader)) { return Integer.parseInt(portHeader); } diff --git a/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java b/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java index 45c38843e..4edcf5241 100644 --- a/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java +++ b/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java @@ -652,10 +652,11 @@ void serverName_albHostHeader_returnsHostHeader() { } @Test - void getRemoteHost_albHostHeader_returnsHostHeader() { + void getRemoteHost_albHostHeader_singleValue_returnsHostHeader() { initAwsProxyHttpServletRequestTest("ALB"); AwsProxyRequest proxyReq = new AwsProxyRequestBuilder("/test", "GET") .alb().build(); + proxyReq.setMultiValueHeaders(null); proxyReq.getHeaders().put(HttpHeaders.HOST, "testapi.us-east-1.elb.amazonaws.com"); HttpServletRequest servletRequest = new AwsProxyHttpServletRequest(proxyReq, null, null); @@ -663,6 +664,19 @@ void getRemoteHost_albHostHeader_returnsHostHeader() { assertEquals("testapi.us-east-1.elb.amazonaws.com", host); } + @Test + void getRemoteHost_albHostHeader_multiValue_returnsHostHeader() { + initAwsProxyHttpServletRequestTest("ALB"); + AwsProxyRequest proxyReq = new AwsProxyRequestBuilder("/test", "GET") + .header(HttpHeaders.HOST, "testapi.us-east-1.elb.amazonaws.com") + .alb().build(); + proxyReq.setHeaders(null); + HttpServletRequest servletRequest = new AwsProxyHttpServletRequest(proxyReq, null, null); + + String host = servletRequest.getRemoteHost(); + assertEquals("testapi.us-east-1.elb.amazonaws.com", host); + } + private AwsProxyRequestBuilder getRequestWithHeaders() { return new AwsProxyRequestBuilder("/hello", "GET") .header(CUSTOM_HEADER_KEY, CUSTOM_HEADER_VALUE) diff --git a/aws-serverless-java-container-jersey/pom.xml b/aws-serverless-java-container-jersey/pom.xml index cf3446a56..7c0d7a08d 100644 --- a/aws-serverless-java-container-jersey/pom.xml +++ b/aws-serverless-java-container-jersey/pom.xml @@ -6,12 +6,12 @@ AWS Serverless Java container support - Jersey implementation Allows Java applications written for Jersey to run in AWS Lambda https://aws.amazon.com/lambda - 2.0.2 + 2.0.4-SNAPSHOT com.amazonaws.serverless aws-serverless-java-container - 2.0.2 + 2.0.4-SNAPSHOT .. @@ -24,7 +24,7 @@ com.amazonaws.serverless aws-serverless-java-container-core - 2.0.2 + 2.0.4-SNAPSHOT com.fasterxml.jackson.core @@ -35,7 +35,7 @@ com.amazonaws.serverless aws-serverless-java-container-core - 2.0.2 + 2.0.4-SNAPSHOT tests test-jar test diff --git a/aws-serverless-java-container-spring/pom.xml b/aws-serverless-java-container-spring/pom.xml index 7a1e41c1b..3d311c088 100644 --- a/aws-serverless-java-container-spring/pom.xml +++ b/aws-serverless-java-container-spring/pom.xml @@ -6,18 +6,18 @@ AWS Serverless Java container support - Spring implementation Allows Java applications written for the Spring framework to run in AWS Lambda https://aws.amazon.com/lambda - 2.0.2 + 2.0.4-SNAPSHOT com.amazonaws.serverless aws-serverless-java-container - 2.0.2 + 2.0.4-SNAPSHOT .. - 6.1.8 - 6.2.4 + 6.1.10 + 6.2.5 @@ -25,12 +25,12 @@ com.amazonaws.serverless aws-serverless-java-container-core - 2.0.2 + 2.0.4-SNAPSHOT com.amazonaws.serverless aws-serverless-java-container-core - 2.0.2 + 2.0.4-SNAPSHOT tests test-jar test diff --git a/aws-serverless-java-container-springboot3/pom.xml b/aws-serverless-java-container-springboot3/pom.xml index d04b91a99..9d6985896 100644 --- a/aws-serverless-java-container-springboot3/pom.xml +++ b/aws-serverless-java-container-springboot3/pom.xml @@ -3,7 +3,7 @@ aws-serverless-java-container com.amazonaws.serverless - 2.0.2 + 2.0.4-SNAPSHOT 4.0.0 @@ -12,12 +12,12 @@ AWS Serverless Java container support - SpringBoot 3 implementation Allows Java applications written for SpringBoot 3 to run in AWS Lambda https://aws.amazon.com/lambda - 2.0.2 + 2.0.4-SNAPSHOT - 6.1.8 - 3.2.6 - 6.2.4 + 6.1.10 + 3.2.7 + 6.2.5 @@ -30,12 +30,12 @@ com.amazonaws.serverless aws-serverless-java-container-core - 2.0.2 + 2.0.4-SNAPSHOT com.amazonaws.serverless aws-serverless-java-container-core - 2.0.2 + 2.0.4-SNAPSHOT tests test-jar test diff --git a/aws-serverless-java-container-struts/pom.xml b/aws-serverless-java-container-struts/pom.xml index 0ce204cad..e6e4f4840 100644 --- a/aws-serverless-java-container-struts/pom.xml +++ b/aws-serverless-java-container-struts/pom.xml @@ -6,12 +6,12 @@ AWS Serverless Java container support - Struts implementation Allows Java applications written for the Struts framework to run in AWS Lambda https://aws.amazon.com/lambda - 2.1.0-SNAPSHOT + 2.0.3-SNAPSHOT com.amazonaws.serverless aws-serverless-java-container - 2.1.0-SNAPSHOT + 2.0.3-SNAPSHOT diff --git a/aws-serverless-jersey-archetype/pom.xml b/aws-serverless-jersey-archetype/pom.xml index bdd7de91d..e6257ec5a 100644 --- a/aws-serverless-jersey-archetype/pom.xml +++ b/aws-serverless-jersey-archetype/pom.xml @@ -4,17 +4,17 @@ com.amazonaws.serverless aws-serverless-java-container - 2.0.2 + 2.0.4-SNAPSHOT com.amazonaws.serverless.archetypes aws-serverless-jersey-archetype - 2.0.2 + 2.0.4-SNAPSHOT maven-archetype https://github.com/aws/serverless-java-container.git - aws-serverless-java-container-2.0.2 + HEAD diff --git a/aws-serverless-spring-archetype/pom.xml b/aws-serverless-spring-archetype/pom.xml index 39ca9e580..a4712ac71 100644 --- a/aws-serverless-spring-archetype/pom.xml +++ b/aws-serverless-spring-archetype/pom.xml @@ -4,17 +4,17 @@ com.amazonaws.serverless aws-serverless-java-container - 2.0.2 + 2.0.4-SNAPSHOT com.amazonaws.serverless.archetypes aws-serverless-spring-archetype - 2.0.2 + 2.0.4-SNAPSHOT maven-archetype https://github.com/aws/serverless-java-container.git - aws-serverless-java-container-2.0.2 + HEAD diff --git a/aws-serverless-spring-archetype/src/main/resources/archetype-resources/build.gradle b/aws-serverless-spring-archetype/src/main/resources/archetype-resources/build.gradle index 12d909c92..e444282e7 100644 --- a/aws-serverless-spring-archetype/src/main/resources/archetype-resources/build.gradle +++ b/aws-serverless-spring-archetype/src/main/resources/archetype-resources/build.gradle @@ -7,8 +7,8 @@ repositories { dependencies { implementation ( - 'org.springframework:spring-webmvc:6.1.8', - 'org.springframework:spring-context:6.1.8', + 'org.springframework:spring-webmvc:6.1.10', + 'org.springframework:spring-context:6.1.10', 'com.amazonaws.serverless:aws-serverless-java-container-spring:[2.0-SNAPSHOT,)', 'org.apache.logging.log4j:log4j-core:2.23.1', 'org.apache.logging.log4j:log4j-api:2.23.1', diff --git a/aws-serverless-spring-archetype/src/main/resources/archetype-resources/pom.xml b/aws-serverless-spring-archetype/src/main/resources/archetype-resources/pom.xml index 89035bf68..32f947cf9 100644 --- a/aws-serverless-spring-archetype/src/main/resources/archetype-resources/pom.xml +++ b/aws-serverless-spring-archetype/src/main/resources/archetype-resources/pom.xml @@ -16,7 +16,7 @@ 1.8 1.8 - 6.1.8 + 6.1.10 5.10.2 2.23.1 diff --git a/aws-serverless-springboot3-archetype/pom.xml b/aws-serverless-springboot3-archetype/pom.xml index 845f1b622..0f3f5cf61 100644 --- a/aws-serverless-springboot3-archetype/pom.xml +++ b/aws-serverless-springboot3-archetype/pom.xml @@ -4,17 +4,17 @@ com.amazonaws.serverless aws-serverless-java-container - 2.0.2 + 2.0.4-SNAPSHOT com.amazonaws.serverless.archetypes aws-serverless-springboot3-archetype - 2.0.2 + 2.0.4-SNAPSHOT maven-archetype https://github.com/aws/serverless-java-container.git - aws-serverless-java-container-2.0.2 + HEAD diff --git a/aws-serverless-springboot3-archetype/src/main/resources/archetype-resources/build.gradle b/aws-serverless-springboot3-archetype/src/main/resources/archetype-resources/build.gradle index 816ebaec2..c3ebe5648 100644 --- a/aws-serverless-springboot3-archetype/src/main/resources/archetype-resources/build.gradle +++ b/aws-serverless-springboot3-archetype/src/main/resources/archetype-resources/build.gradle @@ -9,7 +9,7 @@ repositories { dependencies { implementation ( - 'org.springframework.boot:spring-boot-starter-web:3.2.6', + 'org.springframework.boot:spring-boot-starter-web:3.2.7', 'com.amazonaws.serverless:aws-serverless-java-container-springboot3:[2.0-SNAPSHOT,)', ) diff --git a/aws-serverless-springboot3-archetype/src/main/resources/archetype-resources/pom.xml b/aws-serverless-springboot3-archetype/src/main/resources/archetype-resources/pom.xml index 2396c0ef1..1cfcd517d 100644 --- a/aws-serverless-springboot3-archetype/src/main/resources/archetype-resources/pom.xml +++ b/aws-serverless-springboot3-archetype/src/main/resources/archetype-resources/pom.xml @@ -16,7 +16,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.6 + 3.2.7 diff --git a/aws-serverless-struts-archetype/pom.xml b/aws-serverless-struts-archetype/pom.xml index 27c530046..9886b62e5 100644 --- a/aws-serverless-struts-archetype/pom.xml +++ b/aws-serverless-struts-archetype/pom.xml @@ -4,12 +4,12 @@ com.amazonaws.serverless aws-serverless-java-container - 2.1.0-SNAPSHOT + 2.0.3-SNAPSHOT com.amazonaws.serverless.archetypes aws-serverless-struts-archetype - 2.1.0-SNAPSHOT + 2.0.3-SNAPSHOT maven-archetype diff --git a/pom.xml b/pom.xml index b5f3a0b01..ecbaa56c8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.amazonaws.serverless aws-serverless-java-container pom - 2.0.2 + 2.0.4-SNAPSHOT AWS Serverless Java container A Java framework to run Spring, Spring Boot, Jersey, Spark, and Struts applications inside AWS Lambda https://github.com/aws/serverless-java-container @@ -37,8 +37,8 @@ https://github.com/aws/serverless-java-container scm:git:https://github.com/aws/serverless-java-container.git - aws-serverless-java-container-2.0.2 - + HEAD + diff --git a/samples/spring/pet-store/build.gradle b/samples/spring/pet-store/build.gradle index 394581eab..9ef83f2d7 100644 --- a/samples/spring/pet-store/build.gradle +++ b/samples/spring/pet-store/build.gradle @@ -7,8 +7,8 @@ repositories { dependencies { implementation ( - 'org.springframework:spring-webmvc:6.1.8', - 'org.springframework:spring-context:6.1.8', + 'org.springframework:spring-webmvc:6.1.10', + 'org.springframework:spring-context:6.1.10', 'com.amazonaws.serverless:aws-serverless-java-container-spring:[2.0-SNAPSHOT,)', 'org.apache.logging.log4j:log4j-core:2.23.1', 'org.apache.logging.log4j:log4j-api:2.23.1', diff --git a/samples/spring/pet-store/pom.xml b/samples/spring/pet-store/pom.xml index 6aae5db92..8f8992973 100644 --- a/samples/spring/pet-store/pom.xml +++ b/samples/spring/pet-store/pom.xml @@ -24,7 +24,7 @@ - 6.1.8 + 6.1.10 2.23.1 17 17 diff --git a/samples/springboot3/alt-pet-store/build.gradle b/samples/springboot3/alt-pet-store/build.gradle index 9a4987860..852d0bb5a 100644 --- a/samples/springboot3/alt-pet-store/build.gradle +++ b/samples/springboot3/alt-pet-store/build.gradle @@ -9,7 +9,7 @@ repositories { dependencies { implementation ( - implementation('org.springframework.boot:spring-boot-starter-web:3.2.6') { + implementation('org.springframework.boot:spring-boot-starter-web:3.2.7') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' }, 'com.amazonaws.serverless:aws-serverless-java-container-springboot3:[2.0-SNAPSHOT,)', diff --git a/samples/springboot3/alt-pet-store/pom.xml b/samples/springboot3/alt-pet-store/pom.xml index c2cf4da03..44963d5ad 100644 --- a/samples/springboot3/alt-pet-store/pom.xml +++ b/samples/springboot3/alt-pet-store/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.6 + 3.2.7 diff --git a/samples/springboot3/graphql-pet-store/pom.xml b/samples/springboot3/graphql-pet-store/pom.xml index 581b13bd8..d8ebb5e1e 100644 --- a/samples/springboot3/graphql-pet-store/pom.xml +++ b/samples/springboot3/graphql-pet-store/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.6 + 3.2.7 diff --git a/samples/springboot3/pet-store-native/pom.xml b/samples/springboot3/pet-store-native/pom.xml index d7a6fb449..441c0aa9e 100644 --- a/samples/springboot3/pet-store-native/pom.xml +++ b/samples/springboot3/pet-store-native/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.6 + 3.2.7 com.amazonaws.serverless.sample diff --git a/samples/springboot3/pet-store/build.gradle b/samples/springboot3/pet-store/build.gradle index 9a4987860..852d0bb5a 100644 --- a/samples/springboot3/pet-store/build.gradle +++ b/samples/springboot3/pet-store/build.gradle @@ -9,7 +9,7 @@ repositories { dependencies { implementation ( - implementation('org.springframework.boot:spring-boot-starter-web:3.2.6') { + implementation('org.springframework.boot:spring-boot-starter-web:3.2.7') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' }, 'com.amazonaws.serverless:aws-serverless-java-container-springboot3:[2.0-SNAPSHOT,)', diff --git a/samples/springboot3/pet-store/pom.xml b/samples/springboot3/pet-store/pom.xml index 2340a3664..28688c8e8 100644 --- a/samples/springboot3/pet-store/pom.xml +++ b/samples/springboot3/pet-store/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.6 + 3.2.7