๋ฐ์ํ ๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ96 [JAVA] Runnable ๊ณผ Thread์ ์ฐจ์ด ์ ์์ ์์ค์ ์๋ Runnable์ด๋ ๊ฐ๋จํ๊ฒ ๋งํด์ Thread๋ฅผ ์ธํฐํ์ด์คํํ ๊ฒ์ธ๋ฐ, Java์์๋ ๋ค์ค ์์์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก Thread๋ฅผ ์์ ๋ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ extends Thread๊ฐ ์๋ implements๋ก Runnable๋ก ์ฒ๋ฆฌ ํ ์ ์๋ค. extends Thread public class ThreadTest extends Thread { public void run() { System.out.println("thread"); } } ThreadTest threadTest = new ThreadTest(); threadTest.start(); implements Runnable public class ThreadTest implements Runnable { public void .. 2022. 5. 16. [Web] ๋๊ธฐ ๋ฐฉ์๊ณผ ๋น๋๊ธฐ ๋ฐฉ์์ ์ฐจ์ด์ ๋๊ธฐ(synchronous) ๋ฐฉ์ ์์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋๋ ๋ฐฉ์์ผ๋ก ์์ฒญ์ ๋ณด๋ธ ํ ์๋ต์ ๋ฐ์์ผ ๋ค์ ๋์์ด ์งํ๋๋ค. ์์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ ํ ์๋ฆฌ์ ๋์์ ๋ํ๋๋ ๊ฒ์ผ๋ก ์ฌ์ฉ์๊ฐ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋์ ๊ฒฝ์ฐ ์์ฒญ์ ๋ํ ์๋ต์ ๋ฆฌํด๋ฐ๊ธฐ ์ ๊น์ง๋ ๋ค๋ฅธ ๊ฒ์ ํ์ง ๋ชปํ๊ณ ๊ธฐ๋ค๋ ค์ผ ํ๋ค. ํน์ ํ๋ก๊ทธ๋จ์ ๊ตฌ๋์ํค๋ ๋ฐ ์๊ฐ์ด 5๋ถ ์์๋๋ค๊ณ ํ๋ฉด, ์ด ํ๋ก๊ทธ๋จ์ด ๊ตฌ๋๋๋ 5๋ถ๋์ ์ปดํจํฐ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ๋์์ํค์ง ๋ชปํ๊ณ , ๊ตฌ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ค. ์ฅ์ : ์ค๊ณ๊ฐ ๊ฐ๋จํ๊ณ , ์ง๊ด์ ์ด๋ค. ๋จ์ : ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๊ธฐ ์ ๊น์ง ๋๊ธฐํด์ผ ํ๋ค. ๋น๋๊ธฐ(Asynchronous) ๋ฐฉ์ ์์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋์ง ์๋ ๋ฐฉ์์ผ๋ก ์์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋์ง ์๋๋ค. ์์ฒญํ ๊ณณ์ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋์ง ์์ผ๋ฉฐ, .. 2022. 5. 4. [JAVA] ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ - Thread JAVA์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ค๋ ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ค๋ฅธ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ผ ๋ ๋น๋๊ธฐ ๋ฐฉ์์ ์ฌ์ฉํ๋ค๋ฉด ์๋์ ๊ฐ์ด ์์ฑํ๋ฉด ๋๋ค. public void request() { Thread thread = new Thread(new Runnable() { @Override public void run() { //์ฝ๋ ์์ฑ } }); thread.start(); } ํ์ง๋ง ๋ณ๋ ฌ์์ ์ฒ๋ฆฌ๋์ด ๋ง์์ง๋ฉด ์ฑ๋ฅ์ด ์ ํ๋๋๋ฐ, ์ด๋ฅผ ๋ง๊ธฐ ์ํด์ ์ค๋ ๋ ํ์ ์ฌ์ฉํด์ผ ํ๋ค. ์ค๋ ๋ํ์ ์ค๋ ๋ ๊ฐ์๋ฅผ ๋ฏธ๋ฆฌ ์ ํด ๋๊ณ , ์์ ํ์ ๋ค์ด์ค๋ ์์ฒญ์ ๋ฏธ๋ฆฌ ์์ฑํด ๋์ ์ค๋ ๋๋ค์๊ฒ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค. JDK 1.5๋ถํฐ๋ java.util.concurrent Package์ ExecutorService ์ธํฐํ์ด์ค์ Ex.. 2022. 4. 27. [JAVA] java.lang.NoSuchMethodError: org.apache.logging.log4j.Logger.error(Ljava/lang/String;Ljava/lang/Object;)V] ๊ณตํต ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค์๋ค. ์ด ๊ณตํต ๊ธฐ๋ฅ์ ๋ชจ์๋ ํ๋ก์ ํธ์ pom.xml์๋ log4j-api.jar๋ฅผ ์ ์ธํ์๊ณ , ์ด๋ฅผ ์ด์ฉํ์ฌ log๋ฅผ ๋จ๊ฒผ๋ค. ex) log.error("์๋ฌ ๋ฐ์");, log.debug("์ฒ๋ฆฌ ์๋ฃ"); ํ์ง๋ง ๋ค๋ฅธ ํ๋ก์ ํธ์์ ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ๋ถ๋ถ์์ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค. Servlet.service() for servlet [appServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.logging.log4j.Logger.error(Lja.. 2022. 3. 25. [JAVA] HttpClient ๋ก๊ทธ ๋จ๊ธฐ๊ธฐ, ๋ก๊ทธ ๋ ๋ฒจ ์ ์ดํ๊ธฐ org.apache.http.client.HttpClient ์ ๋ก๊ทธ๊ฐ ๋ก๊น ๋์ง ์์ ์ดํด๋ณด๋ JCL๊ณผ slf4j์ ๋ธ๋ฆฟ์ง ์ญํ ์ ํ๋ 'jcl-over-slf4j' ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋น ์ ธ์์๋ค. ์ด ๋ถ๋ถ์ ๋ํ ์์ธํ ์ค๋ช ์ ์ด ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๊ธฐ! https://dololak.tistory.com/635 pom.xml์ jcl-over-slf4j ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ฃผ์๊ณ org.slf4j jcl-over-slf4j ${slf4j.version} log4j2๋ฅผ ์ฌ์ฉํ๊ณ ์์๊ธฐ์ log4j2.xml์ ์๋์ ๊ฐ์ด ์ถ๊ฐํด์ฃผ์๋ค. 2022. 3. 25. [JAVA] jackson -JsonInclude ์์ฑ (null, empty๋ฑ์ ๋ฐ์ดํฐ ์ ์ธํ๊ธฐ) VO๊ฐ์ฒด๋ฅผ JSON์ผ๋ก ๋ณํํ ๋ ํฌํจ๋๋ฉด ์๋๋ ๋ณ์์ @JsonIgnore ์ด๋ ธํ ์ด์ ์ ์ ์ธํ์ฌ JSON์ ํฌํจ๋์ง ์๋๋ก ํ ์ ์๋ค. ํ์ง๋ง ์ํฉ์ ๋ฐ๋ผ json ํฌํจ ์ฌ๋ถ๊ฐ ๋ฌ๋ผ์ง๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); //null์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ๊ณ json ์์ฑ mapper.writeValueAsString(testVO); VO์ default๋ก ์ ์ฉํ๋ ค๋ฉด VO Class์ @JsonInclude ์ด๋ ธํ ์ด์ ์ ์ ์ธํ๋ฉด ๋๋ค. @JsonInclude(JsonInclude.Include.NON_NULL) .. 2022. 3. 11. [Spring Framework] CORS ์ ์ฉํ๊ธฐ - @CrossOrigin, <mvc:cors>, Filter CORS๋? test2.com:8080์ฌ์ดํธ์ test.com:18080 ์ฌ์ดํธ๋ ๋๋ฉ์ธ๊ณผ ํฌํธ๊ฐ ๋ค๋ฅด๋ค. ๋ฐ๋ผ์ test.com:18080์์ test2.com:8080์ฌ์ดํธ๋ก ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง๋ ์ ์๋ค. Access to XMLHttpRequest at 'http://domain1:8080/xxxxx' from origin 'http://test.com:18080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. http://localhost:8080/test/1 ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๊ตํด๋ณด๋ฉด URL ์ถ์ฒ ๋น๊ณ http://local.. 2022. 3. 11. [JAVA] The method getRealPath(String) from the type ServletRequest is deprecated WEB-INF ๊ฒฝ๋ก์ ์๋ ํน์ ํ์ผ์ ์ ๋๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ์๋์ ๊ฐ์ด ์์ฑํ๋๋ฐ 'The method getRealPath(String) from the type ServletRequest is deprecated'๋ผ๋ ๊ฒฝ๊ณ ๋ฌธ๊ตฌ๊ฐ ํ์๋์๋ค. request.getRealPath("/WEB-INF/xxx/xxx.txt"); ํด๊ฒฐ๋ฐฉ๋ฒ request.getSession().getServletContext().getRealPath("/WEB-INF/xxx/xxx.txt"); jsp์์ ์๋์ ๊ฐ์ด ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค! application.getRealPath("/WEB-INF/xxx/xxx.txt"); 2022. 3. 11. ์ด์ 1 2 3 4 5 6 ยทยทยท 12 ๋ค์ 728x90 ๋ฐ์ํ