본문 바로가기

전체 글

Web Crawler에 대한 대응방법(Struts) 개요 웹 검색로봇(web Crawler)의 정부수집과 내부서비스에 대한 잘못된 접근으로 인해 시스템 에러가 발생할 수 있습니다. 이와 관련해서, Web Server에서 검색을 허용할 로봇을 관리하고 통해 할 수 있지만, 일일이 검색 로봇을 관리하기 어렵습니다. 그렇다고 검색로봇의 접근을 차단하는 것도 때때로 google이나 naver등을 통해서 홈페이지의 정보가 검색되는 광고효과를 무시할 수도 없습니다. 따라서 WEB Server의 컨텐츠는 노출하되, 내부서비스 요청에 대해서만 통제하는 방식으로 접근하는 것이 효율적인 방법으로 생각됩니다. Web Crawler에 의한 잘못된 요청 차단 홈페이지 (Internet, Mobile) 정보 수집 중, 잘못된 WAS 접근으로 인한 시스템 에러 발생으로 웹 로봇의 .. 더보기
Jeus EJB Hot deploy EJB Deploy를 위해서 각각의 Bean component에서 참조하는 library가 독립된 memory 영역에 위치해야만 한다. 따라서 Application 설계시 이러한 Bean 모듈 캡슐화를 고려해야만하다. Jeus의 경우에 유틸 및 공통 라이브러리 또는 다 도메인 참조등 각 Bean에서 참조할 수있는 Shared memory area를 지원하고 있다. 하지만, 이부분은 공유되는 자원이 매우 작을때 한정적으로 사용 가능 할 것이다. shared memory를 많이 사용하게되면, 각각의 Bean의 덩치가 커지게 되며, 이는 오히려 서비스의 효율을 떨어뜨리고, 자원사용에 문제점을 야기 할 수도 있다. EJB를트랜젝션 관리로만 사용하고 있고, java reflection를 통해서 비즈니스 어플리케이.. 더보기
복잡한 객체 복사(Deep Copy) JAVA Clone 우리가 객체를 복사할때 Clone() 을 사용합니다. 하지만 이경우, 객체가 가지고 있는 Sub 객체는 복사되지 않고, 주소 정보만 가지고 있게 됩니다. hOriginalMap = new HashMap(); hOriginalMap.put("key1", "value1"); hOriSubMap = new HashMap(); hOriSubMap.put("subKey1","subValue1"); hOriginalMap.put("keyObj1", hOriSubMap); HashMap hNewMap = null; hNewMap = (HashMap)hOriginalMap.clone(); Original Map address=[3526198] new Map address=[7699183] Origi.. 더보기
(Jquery)CDN 사용시 고려사항 JQuery CDN은 Content Delivery Network의 약자로써 온라인으로 관련 Contents를 전송받아 사용하는 기술입니다. JQuery CDN 방식의 장점은 Script Loading이 빠르고, 외부 Web Server에서 관련 Library를 다운받기 때문에 운영서버에 다운로드를 위한 Bandwidth 비용이 들지 않는 장점이 있습니다. 하지만 아래와 같은 부분이 고려 되어야 합니다. 1. CDN Server 다운시 페이지 타임아웃 처리됨 => Local 운영서버에서 다운로드하도록 할 수 있고, CNS 서버 연결 주소의 모든 서버가 다운(Service Fail)될 확률은 희박하지만, Server down의 가능성은 존재함. 2. 해당 서버가 해킹되면, 같이 해킹 될 수 있음. 3. 일.. 더보기
java 소켓 연결 Timeout 설정 보통 Socket에서 대한 ReadTimeout 설절을 하면서 Socket에 대한 Connection 타임아웃을 누락하는 경우가 있습니다. 해당 Socket이 정상적으로 Open 되어 있지 않을때, Socket connection 타임아웃이 없으면 수초동안 waitting이 걸릴 수 있습니다. Web Application 내에서라면 WAS에서 사용하는 외부 소켓문제로 인해 Thread가 full되어 서비스 불능이 될 수도 있습니다. 따라서 Socket의 connection에 문제가 있다면 바로 식별 할 수 있도록 connection 타임아웃 이간을 넣어주시기 바랍니다. 연결 대상 69.111.112.159...호스트에 연결할 수 없습니다. 포트 3434: 연결하지 못했습니다. 이 경우에 소켓 연결 자체에.. 더보기
Spring Boot Maven 빌드시 PKIX path building failed 오류 처리 Spring Initializr 를 사용하여 Maven 빌드시 PKIX path building failed이 발생하면 아래와 같이 해결 할 수 있다. 원인은 연결하려는 Remote site의 인증서가 신뢰하는 인증기관 인증서 목록(keystore)에 없는 경우 발생 할 수있다. 1. cmd창에서 curl을 사용하여 installCert.java를 다운받는다. 인터넷에 해당파일 찾아 다운로드 할 수도 있다. C:\Users\user1>curl -O https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java 해당폴더에 installCert.java 을 확인 할 수 있습니다. 2. install.. 더보기
java.util.ConcurrentModificationException 해결방법 발생원인 : 공유 Session 사용의 부주의 일반적인 Web application에서는 단일 thread에 의해 공유자원이 사용 됨으로 잘 발생하지 않습니다. 그러나 Client가 동시에 여러개의 Request를 요청할 때 발생 할 가능성이 있습니다. 물론 서버의 성능이 좋다면 발생하는 가능성이 줄어들기는 하지만, 근본적으로 Application 개발시 Session사용의 부주의로 인해서 발생한다고 생각합니다. Client에서 동시에 여러개의 Request를 서버로 보내면, 서버는 각각의 Thread가 Request에 대한 업무를 처리합니다. 이 Exception은 동시에 여러개의 Thread가 단일 Session 정보를 공유하고, 갱신하기에 발생하는 문제입니다. JEUS의 경우 로그에서 “jeus.s.. 더보기
성능 테스트 성능테스트 Performance Test 개요 서버는 일반 PC(Personal Computer)와 다르게 극강의 성능을 발휘 할 거라고 생각 하지만, 잘 못된 code 한줄로도 Memory leak을 발생시켜 서비스를 무력화 시킬 수도 있습니다. 성능테스트를 통해서 궁극적으로 서비스의 Target performance를 찾아야 하지만 서비의 가용성을 최대한 활용하여 최적의 performance를 찾아야 합니다. 물리적 서버의 가용성을 확인 하고 최대한의 성능을 도출 후에 목표하는 성능에 미달 하였다면 서버의 용량 증설, 서비스 프로세스 점검등이 필요합니다. 성능테스트 목표 ; Workload 산정에 의한(없으면 예측) 기준이 되는 부하량에서 Target 시스템이 부합하는 확인 ; 서비스의 가용성 및 임.. 더보기