목록Server/Spring (49)
써먹는 웹개발
1. 콘트롤러 Map responseData = testService.getTestListAPIData(params); 1) Websocket 이면 messagingTemplate.convertAndToUser(params.gdtLoginId().get(), destination, successResponse(responseData)); 2) Websocket 아니면 try { ... return successResponse(responseData); } catch (Exception e) { return failResponse(e); } ※ successResponse의 형식이 websocket일때는 직접쏘지 않으므로 ResponseEntity, 아닐때는 직접쏘므로 DeferredResult> 를 쓴다..
DeferredResult 클래스는 어떤 요청에 대한 응답 이벤트를 Queue에 저장하고 있다가 DeferredResult.setResult() 메소드가 호출되면 DispatcherServlet으로 응답을 보냅니다. 즉, 서버가 Push하는 기술들을 구현할 수 있습니다. ex) deferredResult.setResult(data); 응답 소스 deferredResult.setResult(ResponseEntity.ok(kr.go.nis.nsis.fisp.portal.entity.Result.success().data(o).build())); ※ 쓰레드 풀 동작원리 : 큐를 먼저 채우다가 큐가 다 차면, maxPoolSize까지 쓰레드를 더 추가로 늘렸다가 쓰레드가 다 차면 오류 발생
@PostLoad는 엔티티를 로딩한 후에 호출할 메서드를 설정한다. ex) @PostLoad public void setFormat() { // fullName 변경 if (fullName == null && name != null) { fullName = name + " (" + nameKr + ")"; } else { fullName = name; } }
모델(model)에 순번추가 방법 ※ db의 시퀀스에서 가져오는 SequenceGenerator까지 필요하지 않은 경우입니다. model private int num; list에 추가할 것 List list = 리스트; for(int i=0;i
에러 발생한 소스 1 httpclient = new DefaultHttpClient(); cs 에러메시지 1 W/SingleClientConnManager(22006): Invalid use of SingleClientConnManager: connection still allocated cs 해결한 방법 1 2 3 4 5 6 7 8 9 public static DefaultHttpClient getThreadSafeClient() { DefaultHttpClient client = new DefaultHttpClient(); ClientConnectionManager mgr = client.getConnectionManager(); HttpParams params = client.getParams();..
http는 양방향 통신으로 서버로부터 응답을 받으려면 반드시 요청을 보내야 되었다. 하지만 Websocket은 커넥션이 생성되면 자유롭게 서버에서 클라이언트에게 데이터를 전달할 수 있다. http 비유는 가족한테 '몇시야?' 라고 물어보면 대답해주는거고, Websocket 비유는 가족한테 '택배오면 깨워줘' 이랬을때 택배오면 그때 깨워주는 것이다.
※ 글쓴 이유 : pom 파일을 각각 넣는 노가다 없이 한번에 넣고 싶을때 처리하기 위해 Q1) pom 일괄 업로드 및 압축(?)해제 A1) 폴더 안의 pom파일을 한번에 'C:\Users\사용자명\.m2\repository' 폴더 안에 maven 레포지토리 파일들이 들어있는데 여기에 해당 파일을 넣고 다음 명령어를 실행한다. 파일명 : mavenimport.sh cmd 오픈 경로 : C:\Users\사용자명\.m2\repository 명령어 : ./mavenimport.sh -u admin -p PASSWORD -r http://ip번호:8081/port번호/content/repositories/repository명/ repository 폴더 그대로 들어가면 성공 ※ 참고 : https://wky.kr..
1. path 한개만 쓸때 ex) 매핑명 : api 1 2 3 4 5 6 7 return new Docket(DocumentationType.SWAGGER_2) .globalRequestParameters(aParameters) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.ant("/api/**")) .build(); Colored by Color Scripter cs 2. path 여러개 포함하고 싶을때 ex) 매핑명 : api, apiDetail 1 2 3 4 5 6 7 return new Docket(DocumentationType.SWAGGER_2) .globalRequestParame..