Programming/Java(Spring)2024. 2. 7. 17:29
Posted by 구차니
Programming/Java(Spring)2020. 1. 15. 10:50

JDK 설치

$ sudo apt install openjdk-8-jdk

[링크 : https://daddyprogrammer.org/post/2062/openjdk-install-update-delete/]

 

예제 spring 프로젝트 다운로드(git)

$ git clone https://github.com/spring-guides/gs-rest-service.git

$ cd gs-rest-service/initial

$ ./gradlew bootRun

[링크 : https://spring.io/guides/gs/rest-service/]

 

http://localhost:8080/greeting

외부에서 접근하려면 ip로 바꾸고 8080 포트로 접속하면 된다.

다만.. 위에서 bootRun으로 했기 수정없이 실행했기에 greeting이 아직 생성되지 않아 접근이 되지 않는다.

gs-rest-service/initial/src/main/java/com/example/restservice/Greeting.java

package com.example.restservice;

public class Greeting {

private final long id;
private final String content;

public Greeting(long id, String content) {
this.id = id;
this.content = content;
}

public long getId() {
return id;
}

public String getContent() {
return content;
}
}

 

gs-rest-service/initial/src/main/java/com/example/restservice/GreetingController.java

package com.example.restservice;

import java.util.concurrent.atomic.AtomicLong;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();

@GetMapping("/greeting")
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}

+

위에서 GetMapping으로 greeting일 경우에

Parameter 이기에 greeting?name= 형식으로 값을 받되, 값이 없으면 기본값을 World로 지정해 주는 것으로 보인다.

@로 시작하는 annotation들은 조금 공부가 필요 할 듯 하다.

 

 

이렇게 파일 두개 추가해주고 gs-rest-service/initial 디렉토리로 돌아와

gradlew bootRun을 실행후

http://localhost:8080/greeting

http://localhost:8080/greeting?name=User

을 접속하면 15분(?) 강좌 끝

 

+

gradlwe bootRun은

gradle 도움말에 안나오는 걸 봐서는 spring boot 에서 추가된 taskName으로 추정된다.

[링크 : https://docs.gradle.org/current/userguide/command_line_interface.html]

 

+

[링크 : https://spring.io/guides/gs/spring-boot/] spring boot

[링크 : https://spring.io/guides/gs/accessing-data-rest/] JPA

[링크 : https://spring.io/guides/gs/accessing-data-mysql/] MYSQL

Posted by 구차니
Programming/Java(Spring)2020. 1. 13. 14:37

java VM 특성(?)으로 localhost에 대해서 주소를 IPv4와 IPv6로 resolve하는 것으로 보인다.

java -jar 앞에 아래의 옵션을 주면 해결!

 

-Djava.net.preferIPv4Stack=true

[링크 : https://hane-1.tistory.com/42]

'Programming > Java(Spring)' 카테고리의 다른 글

ckedtior file upload  (0) 2024.02.07
spring 다시 시작  (0) 2020.01.15
jsoup html body 사이즈 제한  (0) 2019.09.26
java 메모리 관련...2?  (0) 2019.07.06
java.lang.OutOfMemoryError: GC overhead limit exceeded  (1) 2019.07.06
Posted by 구차니
Programming/Java(Spring)2019. 9. 26. 19:04

기본값은 body size 1MB 라고 한다.

그런 이유로 용량이 큰 걸 받아오면 잘리는 듯..

(특이하게 닫는 태그는 알아서 생성되는 것으로 보인다)

 

[링크 : https://stackoverflow.com/questions/36721635/why-jsoup-does-not-read-all-the-elements-of-the-page]

[링크 : https://jsoup.org/apidocs/org/jsoup/Connection.html#maxBodySize-int-]

 

+

크롬에서 200KB 래서 방심했는데.. gzip으로 압축되서 온게 그 용량

실제로는 2.5MB 이런식으로 크게 와서 body 크기가 1MB에 제한되서 잘린듯..

'Programming > Java(Spring)' 카테고리의 다른 글

spring 다시 시작  (0) 2020.01.15
spring boot 어플리케이션 로그 0:0:0:0:0:0:0:1  (0) 2020.01.13
java 메모리 관련...2?  (0) 2019.07.06
java.lang.OutOfMemoryError: GC overhead limit exceeded  (1) 2019.07.06
mvn -P profile  (0) 2019.06.08
Posted by 구차니
Programming/Java(Spring)2019. 7. 6. 19:59

128GB 서버에서 돌리니 최대 힙 사이즈가 32기가가 잡히는것 같고

16GB 서버에서 확인해보니 InitialHeapSize 와 MaxHeapSize가 모두 1/4 크기이다.

# java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
     intx CompilerThreadStackSize                   = 0                                   {pd product}
    uintx ErgoHeapSizeLimit                         = 0                                   {product}
    uintx HeapSizePerGCThread                       = 87241520                            {product}
    uintx InitialHeapSize                          := 2109734912                          {product}
    uintx LargePageHeapSizeThreshold                = 134217728                           {product}
    uintx MaxHeapSize                              := 32210157568                         {product}
     intx ThreadStackSize                           = 1024                                {pd product}
     intx VMThreadStackSize                         = 1024                                {pd product}
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

[링크 : https://www.mkyong.com/java/find-out-your-java-heap-memory-size/]

 

spring boot로 실행하니(java -jar을 통해서 war 실행)

-Xms2971M -Xmx3971M -Xmn400M 으로 뜨는데 순서대로 (실수.. 카산드라 메모리였음.. -_ㅠ)

InitialHeapSize / MaxHeapSize / 마지막은 모르겠네?

아무튼.. 저 값이 기본인지 부터 확인해야 할 듯

1. -X Option (모든 VM에서 동작하지 않을 수 있는 비표준 option이며, 버젼별로 언급없이 변경되어질 수 있음)
-Xms : 초기 Heap size 설정
-Xmx : 최대 Heap size 설정
-Xss : 각 Thread에 할당되는 Stack size 설정
-Xmn : New 영역을 위한 Heap size 설정

2. -XX Option (올바른 동작을 위해 특정한 시스템 요구사항들이 있으며, 시스템 설정 파라미터에 대한 접근 권한이 요구됨)
-XX:PermSize : 초기 Permanent size 설정
-XX:MaxPermSize : 최대 Permanent size 설정

[링크 : https://webprogrammer.tistory.com/1430]

[링크 : https://spring.io/blog/2015/12/10/spring-boot-memory-performance]

 

+

일단은 -Xmx로 설정해주는게 영향을 주긴 한 듯..

Posted by 구차니
Programming/Java(Spring)2019. 7. 6. 19:50

이거 먼가.. 심각하게 심각해 보이는데..

아무튼 heap 메모리를 좀 넉넉하게 잡아주면 될거 같으면서도 애매하네?

 

java -Xmx1024m com.yourcompany.YourClass

[링크 : https://helloino.tistory.com/97]

[링크 : https://www.baeldung.com/java-gc-overhead-limit-exceeded]

 

If starting the app with the spring-boot plugin:

mvn spring-boot:run -Drun.jvmArguments="-Xmx512m" -Drun.profiles=dev
Otherwise if running java -jar:

java -Xmx512m -Dspring.profiles.active=dev -jar app.jar

[링크 : https://stackoverflow.com/questions/23072187]

'Programming > Java(Spring)' 카테고리의 다른 글

jsoup html body 사이즈 제한  (0) 2019.09.26
java 메모리 관련...2?  (0) 2019.07.06
mvn -P profile  (0) 2019.06.08
tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat 자동 war 배포 막기  (0) 2019.06.07
Posted by 구차니
Programming/Java(Spring)2019. 6. 8. 20:19

 

6.1.3. Using Build Profiles

To activate one or more build profiles from the command line, use the following option:

-P, --activate-profiles <arg>Comma-delimited list of profiles to activate

For more information about build profiles, see Chapter 5, Build Profiles.

 

[링크 : https://books.sonatype.com/mvnref-book/reference/running-sect-options.html]

[링크 : https://www.lesstif.com/pages/viewpage.action?pageId=14090588]

'Programming > Java(Spring)' 카테고리의 다른 글

java 메모리 관련...2?  (0) 2019.07.06
java.lang.OutOfMemoryError: GC overhead limit exceeded  (1) 2019.07.06
tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat 자동 war 배포 막기  (0) 2019.06.07
tomcat manager GUI  (0) 2019.06.07
Posted by 구차니
Programming/Java(Spring)2019. 6. 7. 16:26

$ sudo apt-get install tomcat9-admin

$ sudo vim /etc/tomcat9/tomcat-users.xml

  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-status"/>
  <user username="tomcat" password="password" roles="manager-gui,manager-script,manager-status"/>

 

war 디플로이 경로(tomcat manager 쓰면 상관없음)

/var/lib/tomcat9/webapps

 

 

+

2019.07.29

sudo vi /etc/tomcat9/tomcat-users.xml

sudo vi /usr/share/tomcat9-admin/manager/WEB-INF/web.xml

<multipart-config>
   <max-file-size>152428800</max-file-size>
   <max-request-size>152428800</max-request-size>
   <file-size-threshold>0</file-size-threshold>
</multipart-config>

sudo vim /usr/share/tomcat9-admin/manager/META-INF/context.xml

<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
     allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
Posted by 구차니
Programming/Java(Spring)2019. 6. 7. 15:59

해당 옵션이 true 라서 war 파일 넣어두고 서버 재시작 하면 배포 되어 버리는 듯

 

unpackWARs
Set to true if you want web applications that are placed in the appBase directory as web application archive (WAR) files to be unpacked into a corresponding disk directory structure, false to run such web applications directly from a WAR file. See Automatic Application Deployment for more information.

[링크 : http://tomcat.apache.org/tomcat-5.5-doc/config/host.html#Standard_Implementation]

[링크 : https://okky.kr/article/130341]

'Programming > Java(Spring)' 카테고리의 다른 글

mvn -P profile  (0) 2019.06.08
tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat manager GUI  (0) 2019.06.07
WARNING: An illegal reflective access operation has occurred  (0) 2019.06.05
spring에 angluar 통합하기  (0) 2019.06.04
Posted by 구차니
Programming/Java(Spring)2019. 6. 7. 10:22

tt
0.00MB

에디터 바뀌면서 <> 들어가면 다 날려버려 내용이 안들어가네

어떻게 해야하지? -_-


[링크 : 
https://elfinlas.tistory.com/369]

[링크 : https://cpdev.tistory.com/110]

'Programming > Java(Spring)' 카테고리의 다른 글

tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat 자동 war 배포 막기  (0) 2019.06.07
WARNING: An illegal reflective access operation has occurred  (0) 2019.06.05
spring에 angluar 통합하기  (0) 2019.06.04
spring war와 war.original  (0) 2019.04.23
Posted by 구차니