본문 바로가기

전체 글

NFS를 이용하여 NAS 마운트 서비스를 운영하다보면 서버를 이중화하기 마련이다. 단일서버라면 첨부파일을 해당서버에 바로 저장해도 되지만, 이중화되어 있다고 가정했을 때 1번서버를 통해서 파일이 업로드 되었는데, 파일 다운로드 요청이 2번서버로 가게 된다면, 2번 서버에서는 파일이 없다는 에러를 내보내게 될 것이다. 따라서 다중화시스템에서 첨부파일등을 저장할 때 동일한 저장소에 저장하는 것은 필수이다. 동일한 저장소에 저장할 수 있는 방법은 여러가지가 있으나, 이 글에서는 NAS를 WAS서버의 특정한 위치에 mount시키는 방법에 대해 설명한다. 1. NFS 서버 설정 (NAS 측에서 수행) NFS 패키지 설치 공유할 디렉토리 설정 NFS 서비스 활성화 및 시작 방화벽 설정 1. NFS 패키지를 설치한다. Centos 기준으로 진행하였.. 더보기
[JAVA] File MD5 checksum File의 무결성을 검증하기 위하여 MD5 checksum을 사용할 일이 있을 수 있다. 인터넷의 어딘가에서 줏어다가 썼는데, 앞자리가 0인 경우에 0이 사라지고 31글자로 처리되는 경우가 있어서 이 부분을 String.format %032x를 사용하는 방식으로 처리하여 정리해 놓는다. byte[] data = Files.readAllBytes(file.toPath()); byte[] hash = MessageDigest.getInstance("MD5").digest(data); String checksum = String.format("%032x", new BigInteger(1, hash)); 더보기
java.io.File을 MutlipartFile로 변환 File file = new File("/path/to/file"); FileItem fileItem = new DiskFileItem("mainFile", Files.probeContentType(file.toPath()), false, file.getName(), (int) file.length(), file.getParentFile()); IOUtils.copy(new FileInputStream(file), fileItem.getOutputStream()); MultipartFile multipartFile = new CommonsMultipartFile(fileItem); 더보기
생계형 개발자 아년규 대 솔트웨어(주) 플랫폼사업부문 개발팀 유지보수 총괄 안현규 선임님의 블로그 이다. https://inthyungyu.tistory.com/ 생계형 개발자 아년규 inthyungyu.tistory.com 안현규특: 회사에서 시간남으면 잡코리아봄 더보기
[JBoss, WildFly] FacesRequestAttributes cannot be cast to ServletRequestAttributes java.lang.ClassCastException: class org.springframework.web.context.request.FacesRequestAttributes cannot be cast to class org.springframework.web.context.request.ServletRequestAttributes JBoss설정에 JSF를 사용하도록 설정되어 있을 때 발생하는 에러이다. JSF가 무엇인지는 각자 알아보자. 아무튼 나는 JSF를 사용하지 않고 내 WebApp를 만들었기 때문에, Interceptor에서 넘어온 RequestAttributes 객체를 ServletRequestAttributes 객체로 Casting하여 사용했는데 실제로 넘어온 RequestAttribute.. 더보기
[JBoss,WildFly] org.apache.xml.dtm.ref.DTMManagerDefault cannot be cast to org.apache.xml.dtm.DTMManager 세상에는 여러 WAS가 있지만 각각 WAS별로 ClassLoader의 loading순서가 다르다. 어떤 WAS는 WAS library, Domain library, WebApp library로 구분되는경우도 있고, 어떤 WAS는 WAS library, WebApp library로 구분되는 경우도 있다. 따라서 만약 was library가 우선적으로 불러와지는데, 내 webapp에서 사용하는 library 버전과 was library에 들어가있는 library의 버전이 다르다면 인터페이스가 달라질 수 있기 때문에 문제가 발생한다. jboss는 너무 친절해서 무슨 많이 사용되는 라이브러리의 경우 내장으로 다 가지고 있다. 다 가지고만 있으면 상관없는데 이게 기본적으로 내가만든 webapp이 deploy될 때.. 더보기
상용 WAS와 오픈소스 WAS 상용 WAS와 오픈소스 WAS에 대해 알아보자. 이 글에서는 힘없는 개발자의 시점에서 작성되었다. 1. 상용과 오픈소스의 차이점 상용 WAS와 오픈소스 WAS의 가장 기본적이면서도 대표적인 차이점은 돈을 지불하고 사용하느냐 아니냐의 차이다. 단순하게 우리가 마트에서 물건을 돈주고 구입해서 사용하는것이 아니라, 기술지원 서비스까지 월/연단위로 구입하여 서비스를 받는다. 물론 해당 WAS를 너무나도 신뢰한다면, 해당 WAS에 대해 빠삭하게 알고있다면 기술지원 서비스를 구입하지 않아도 된다. 돈을 지불하고 사용한다는 것은 해당 WAS에 대한 기술지원을 수반하며, 다른 업체에서 Web Application을 납품할 때 해당 Web Application을 문제없이 WAS에 올릴 수 있도록 도와준다는 것 이다. 또.. 더보기
JAVA, .NET, PHP, JS(NodeJS, ES5, ES6) 에서 UTF-8 파일 다운로드 인코딩, RFC2231 1. 개요 각 언어별로 RFC2231 인코딩을 해보자. 브라우저로 하여금 현재 응답이 파일 다운로드라는것을 알려주기 위해서 우리는 Header에 ContentType과 ContentDispotion등을 이용한다. 보통 다운로드를 제공할때 Header에 Content-Dispostion: attachment; filename="파일명.html" 의 형식으로 많이들 사용하지만, 사실 이는 표준을 준수한것이 아니다. 표준을 준수하기 위해서는 RFC2231표준에 맞게 인코딩된 파일명을 아래와 같은 형식으로 보내줘야한다. 파일명을 Content-Disposition: attachment; filename*=UTF-8''foo-a%cc%88.html 위의 형식으로 보내줘야 한다. 이상해보이긴 하지만 이게 표준이다... 더보기