요즘은 정말 스택오버플로우의 코드조각을 많이 참고합니다.

2000년에 만들어진 cos.jar를 보내드리고, 아파치 커먼스의 업로드 컴포넌트를 사용해 봤습니다.


https://github.com/kenu/oksample/tree/master/commons-fileup


/**
* code from: http://stackoverflow.com/questions/15432024/how-to-upload-a-file-using-commons-file-upload-streaming-api
*/
@WebServlet("/upload4")
public class UploadServlet4 extends HttpServlet {
        private static final long serialVersionUID = 1L;

        protected void doPost(HttpServletRequest request,
                        HttpServletResponse response) throws ServletException, IOException {
                PrintWriter out = response.getWriter();
                response.setHeader("Content-Type", "text/html");
                out.print("Request content length is " + request.getContentLength()
                                + "<br/>");
                out.print("Request content type is "
                                + request.getHeader("Content-Type") + "<br/>");
                boolean isMultipart = ServletFileUpload.isMultipartContent(request);
                if (isMultipart) {
                        ServletFileUpload upload = new ServletFileUpload();
                        try {
                                FileItemIterator iter = upload.getItemIterator(request);
                                FileItemStream item = null;
                                String name = "";
                                InputStream stream = null;
                                while (iter.hasNext()) {
                                        item = iter.next();
                                        name = item.getFieldName();
                                        stream = item.openStream();
                                        if (item.isFormField()) {
                                                out.write("Form field " + name + ": "
                                                                + Streams.asString(stream) + "<br/>");
                                        } else {
                                                name = item.getName();
                                                System.out.println("name==" + name);
                                                if (name != null && !"".equals(name)) {
                                                        String fileName = new File(item.getName())
                                                                        .getName();
                                                        out.write("Client file: " + item.getName()
                                                                        + " <br/>with file name " + fileName
                                                                        + " was uploaded.<br/>");
                                                        File file = new File(getServletContext()
                                                                        .getRealPath("/" + fileName));
                                                        FileOutputStream fos = new FileOutputStream(file);
                                                        long fileSize = Streams.copy(stream, fos, true);
                                                        out.write("Size was " + fileSize + " bytes <br/>");
                                                        out.write("File Path is " + file.getPath()
                                                                        + "<br/>");
                                                }
                                        }
                                }
                        } catch (FileUploadException fue) {
                                out.write("fue!!!!!!!!!");
                        }
                }
        }
}


apache/bin/ab.exe 간편하고 쉬운 도구인데, 아파치를 윈도우에 설치해야 한다는 부담이 있죠.

http://www.apachefriends.org/en/xampp-windows.html#641


xampp 패키지에 있는 apache를 이용하면 됩니다.

xampp/apache/bin/ab.exe 를 호출할 수 있습니다.


물론 이것도 180MB라는 무시무시한 zip파일을 다운받아서 압축을 풀어야 합니다.



버전이 맞지 않으면 이클립스의 다이나믹 웹 프로젝트가 컴파일 되지 않는 현상이 있습니다. Problems탭을 보면 다음과 같은 메시지가 보입니다.
Project facet Java 5.0 is not supported by target runtime Apache Tomcat v5.0
Java5.0은 Apache Tomcat v5.5 이상과 맞기 때문입니다.

해당 라인을 선택하고 Quick Fix 메뉴를 선택합니다. (ctrl+1 또는 command+1)

Quick Fix 창이 나오기는 합니다만 막막합니다. 그냥 Create a new runtime environment 선택된 상태에서 Finish 버튼을 클릭합니다.

Runtime Environment 에 Apache Tomcat v6.0을 선택합니다.

프로젝트 Clean...을 선택해서 다시 빌드합니다.

그냥 전체 class 다 지우고 빌드를 몽창 다 해버렸습니다.

말끔하게 해소되지 않는군요.
Java project facet과 자바컴파일러가 맞지 않는다는군요.

Quick Fix를 클릭하니 옵션이 두 개가 나왔습니다. 그냥 6.0을 하니 Apache Tomcat v6.0과 Java6.0은 또 어울리지 않는다는군요. 쩝.

프로젝트 프로퍼티창을 열어봅니다.

facet으로 검색을 해 봤습니다. Project Facets라는 것이 나옵니다.

이 항목에서 5.0으로 맞춰주었습니다.

Targeted Runtimes는 Apache Tomcat v6.0이 선택되어 있습니다.

Project > Clean... 과정을 다시 해보면 Facet 오류가 사라졌을 것입니다.

평소에 들여다 보았으면 좋았을텐데 하는 아쉬움이 남습니다. CVS에서 SVN으로 모든 프로젝트가 이전하는 것은 몇 년 전에 알고 있었는데, 오늘 책을 쓰다가 아파치 소프트웨어 재단(Apache Software Foundation)의 저장소를 보고 놀랬습니다. 백 개가 넘는 모든 프로젝트들이 한 저장소에서 관리되고 있습니다. 각 프로젝트별로 trunk, branches, tags 를 각기 관리하고 있습니다.
리비전 번호에 신경을 쓰지 않아도 될 듯 합니다. 숫자는 다르다는 것만 표시하면 될 뿐, 통합 저장소로 인한 리비전 번호의 증가에 괜히 신경쓰지 않아도 될 것입니다.


톰캣 프로젝트 내에도 여러 서브프로젝트들이 존재합니다. 저장소 구성은 다음과 같습니다.

괜히 은근슬쩍 2002년이 떠오르는군요. 자카르타서울 프로젝트. 지금은 동면상태이죠.
http://www.apache-korea.org

네이버 뉴스 개편하느라 고생들 많으신 듯 합니다.

서버는 아파치웹서버 2.2.4와 mod_jk/1.2.20 커넥터로 JSP,서블릿을 처리하는 아파치톰캣에 연결되어 있군요. 현재 메시지는 톰캣 서버가 내려가 있는 상태.

댓글 영역 서버가 memo.news.naver.com 이군요.
제 사이트의 코멘트들도 memo라고 명명했었는데.
잘 되시길 바랍니다.

사용자 삽입 이미지

+ Recent posts