본문 바로가기

Java

AWS에서 Java 업데이트 하기 Vertx를 이번에 사용하게 되었는데 아마존 서버에 올리니 아래와 같이 Version을 지원하지 않는다고 한다. ava.lang.UnsupportedClassVersionError: org/vertx/java/core/Handler : Unsupported major.minor version 51.0 (unable to load class org.vertx.java.core.Handler)at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2922)at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1174.. 더보기
Maven install시 Test Skip 하기 아주 간단하다~! pom.xml에 입력해주면 끝~! org.apache.maven.plugins maven-surefire-plugin 2.12.4 true 더보기
Servlet 이란 ● CGI CGI(Common Gateway Interface)는 동적인 웹 애플리케이션 작성기술로 서블릿보다 먼저 등장해 많은 웹 애플리케이션에서 사용됐다. CGI는 와 같은 동작 방법으로 클라이언트에서 요청을 받아 요청에 해당하는 프로세스(프로그램)를 실행시킨다. CGI는 대부분의 프로그래밍 언어로 작성할 수 있지만 그중에서도 펄(Perl) 언어로 많이 작성됐다. ● 서블릿서블릿은 CGI와 동일하게 동적인 웹 애플리케이션을 작성할 수 있는 기술이다. 현재 서비스되고 있는 대부분의 웹 애플리케이션은 서블릿으로 작성됐다. CGI와 비슷하게 클라이언트의 요청을 받아 해당하는 프로그램을 실행시켜주지만 CGI와는 조금 다른 동작 형태를 보인다. 서블릿이란? ● 플랫폼 독립성 자바로 작성된 서블릿은 자바의 특징.. 더보기
[Java Design Patten] Guarded Suspension 이 처리를 실행하면 안 될 때 처리하기 직전에 쓰레드를 기다리게 하는 패턴이다. 아래의 시퀀스 다이어그램을 참고~! public class Request {private final String name;public Request (final String name) {this.name = name;}public String getName () {return this.name;} public String toString() {return "Request [name=" + name + "]";} } public class RequestQueue { private final Queue queue = new LinkedList();public synchronized Request getRequest () {whi.. 더보기
[Java Design Patten] Immutable 상태의 변화가 없는 경우에는 synchronized를 할 필요가 없다. 여기서는 불변의 객체의 역할로 Person이 담당을 하였다. public final class Person {private final String name;private final String address;public Person (final String name, final String address) {this.name = name;this.address = address;} public String getName() {return name;} public String getAddress() {return address;} @Overridepublic String toString() {return "Person [name=" +.. 더보기
[Java Design Patten] Single Threaded Execution Gate 클래스는 SharedResource 역할을 담당하고 있다. 그리고 자세히 보면 pass 에 Synchronized 키워드를 사용한 것을 주목하자 사용한 이유는 동시에 복수의 Thread가 접근하면 문제가 발생하기 때문이다. public class Gate {private int counter = 0;private String name = "Nobody";private String address = "NoWhere";public synchronized void pass (final String name, final String address) {this.counter++;this.name = name;this.address = address;check();}public String toString.. 더보기
[Java] wait, notify, notifyAll Thread가 Wait를 하면 다른 Thread에서 notify 혹은 notifiyAll을 호출해야 다음 작업을 진행한다. notify 와 notifiyAll의 차이는 하나만 다시 실행하게 할지 아니면 기다리고 있는 모든 Thread를 실행할지 의 차이이며notifiyAll을 사용하는 쪽이 코드가 견고하다고 한다. 그리고 wait메소드를 실행하기 위해서는 반드시 락을 가지고 있어야 한다. 더보기
[Java] synchronized 사용법 정리 1. synchronized void method () {.....} 2. void emthod () {synchronized (this) {....}} 3. class Something {static synchronized void method () {...}} 4. class Something {static void method () {synchronized (something.class) {...}}} 더보기
[Java] 패키지 탐색하기~! Java에서 Reflection을 편리하게? 사용하기 위한 라이브러리가 있다. 아래와 같이 사용하면 된다.~! 1. 라이브러리 추가 org.reflections reflections 0.9.9-RC1 2. 사용법Reflections reflections = new Reflections("my.project.prefix"); Set> annotated = reflections.getTypesAnnotatedWith(SomeAnnotation.class); Reflections reflections = new Reflections("my.package.prefix"); //or Reflections reflections = new Reflections(ClasspathHelper.forPackage("my... 더보기
[Java] Class Method 접근 및 사용 tClass는 해당 사용할 함수를 가진 Class 이고 instance는 tClass의 instance이다.그리고 invoke 하면 호출이 되어지고 Paramater도 마찬가지로 class를 넣어주면 된다. 그리고 invoke에 같이 paramater를 넣어주면된다. final Method setTargetNoMethod = tClass.getMethod("set" + modelClassName + "No", Integer.class); setTargetNoMethod.invoke(instance, info.getTargetNo()); 더보기