전체 글
-
vertx http tcp카테고리 없음 2023. 4. 19. 09:55
이번엔 netty 를 코어로 만든 vertx http 서버와 tcp 서버를 만들어보자 필자가 원하는건 이거였다. http로 날리면 tcp로 푸시를 해주는 그런 서버? 그러기 위해서는 http서버와 tcp 서버를 만들어줘야된다. vertx 3.x 에는 Router로 수정되었다. 그리고 BusModBase이 아닌 AbstractVerticle 를 상속받아 구현해야 된다. 소스를 보자 public class VerticleProducer extends AbstractVerticle { @Override public void start() throws Exception { Router router = Router.router(vertx); router.route().handler(BodyHandler.creat..
-
netty (5) netty의 ByteBuf카테고리 없음 2023. 4. 19. 09:55
ByteBuf 이번엔 netty의 버퍼를 알아볼 차례다. 네티의 버퍼는 flip 메서드를 호출하지 않아도 읽기도 쓰기 인덱스가 분리되어 사용 가능하다. 소스를 보자. private void testBuffer(ByteBuf buf, boolean isDirect){ assertEquals(11, buf.capacity()); assertEquals(isDirect, buf.isDirect()); buf.writeInt(65537); assertEquals(4, buf.readableBytes()); assertEquals(7, buf.writableBytes()); assertEquals(1, buf.readShort()); assertEquals(2, buf.readableBytes()); assert..
-
netty (4) java의 ByteBuffer카테고리 없음 2023. 4. 19. 09:55
netty (4) java의 ByteBuffer 이번 포스팅은 netty의 ByteBuf를 알아보기전에 자바의 ByteBuffer에 대해서 알아보겠다. 자바의 ByteBffer는 java 1.4 에 추가 NIO 바이트 버퍼이다. 자바의 Buffer에는 ByteBuffer, CharBuffer, IntBuffe, ShortBuffer, ...등등 여러가지가 있다. 이런 버퍼클래스는 내부의 배열 상태를 관리하는 속성이 있다. capacity 버퍼에 저장할 수 있는 데이터의 최대 크기 한번 저장하면 변경 할 수 없다. position 읽기 또는 쓰기가 작업 중인 위치를 나타낸다. 객체가 생성될 때 0으로 초기화 되고 입력 혹은 읽을때 자동으로 증가한다. limit 와 capacity 값보다 작거나 같다. li..
-
netty (3) 채팅 서버 만들어보자!카테고리 없음 2023. 4. 19. 09:55
netty (3) 채팅 서버 만들어보자! 이번에는 배운걸 기준으로 채팅 서버를 만들어 볼 예정이다. 아주 간단하게 메시지를 보내는거와 귓속말을 할 수 있는 서비스를 만들어보자. public class ChatNettyServer { private static final ChatNettyServiceHandler SHARED = new ChatNettyServiceHandler(); public static void main(String[] args) { EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new Serve..
-
netty (2) 이벤트 핸들러카테고리 없음 2023. 4. 19. 09:55
netty 이번엔 이벤트 핸들러에 대해 알아보자 ChannelInboundHandlerAdapter 클래스는 ChannelInboundHandler 인터페이스를 사용한 어댑터이다. 실질적인 구현에 대한 로직은 없다. 아래는 ChannelInboundHandler 인터페이스의 내용이다. void channelRegistered(ChannelHandlerContext ctx) throws Exception; void channelUnregistered(ChannelHandlerContext ctx) throws Exception; void channelActive(ChannelHandlerContext ctx) throws Exception; void channelInactive(ChannelHandlerC..
-
netty (1)카테고리 없음 2023. 4. 19. 09:55
netty 예전에 책을 샀는데 쓸일이 있을 것도 같아서(혹은 vertx) 공부해본다. 책에 있는 내용을 정리 해본다. 블로킹과 논블러킹 블로킹은 요청한 작업이 성공하거나 에러가 발생하기 전까지 응답을 해주지 않는다. 논블로킹은 성공여부와 상관없이 바로 결과를 돌려주는 것을 말한다. 간단하게(?) 알아보자 public class BlockingServer { public static void main(String[] args) throws IOException { new BlockingServer().run(); } private void run() throws IOException { ServerSocket serverSocket = new ServerSocket(8080); System.out.prin..
-
spring swagger-ui카테고리 없음 2023. 4. 19. 09:55
spring swagger-ui swagger-ui는 테스트? 혹은 문서? 가 있는 UI를 제공 해준다. 한번 살펴 보자 maven에 다음과 같이 추가 하자 ... io.springfox springfox-swagger2 2.4.0 io.springfox springfox-swagger-ui 2.4.0 ... swagger 설정을 해주자 @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket restApi() { // @formatter:off return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerS..
-
javax.validation 빈 검증 (JSR 303)카테고리 없음 2023. 4. 19. 09:55
javax.validation 빈 검증 (JSR 303) @NotNull, @NotEmpty, @NotBlank @Notnull 일 경우 null 허용 하지 않는다. "" 허용한다. @NotEmpty 일 경우 null 허용 하지 않는다. "" 허용하지 않는다. " "(space) 허용한다. @NotBlank 일 경우 셋다 허용 하지 않는다. @Notnull @NotEmpty @NotBlank null 허용하지 않음 허용하지 않음 허용하지 않음 "" 허용 허용하지 않음 허용하지 않음 " "(space) 허용 허용 허용하지 않음 실제 디비에는 모두 not null로 들어 간다. @Size size 를 지정 할 수 있다. 속성은 max, min, message 데이터 베이스엔 max 값 으로 지정 된다. @M..