알프레스코 9

이전 버전노드 수정하기

원래 안되는 것인줄 알고만 있었는데, 아래처럼 간단하게 convert 해주면 메타정보나 본문수정이 가능합니다. 수정해보니 잘되서 원리까진 파악해보지 못했습니다. :-) 컨버트 후에 수정하면 되는데, 별다른건 없고, 노드정보를 versionStore 에서 workspace 로 변경합니다. NodeRef FrozenStateNodeRef = versionHandler.getFrozenStateNodeRef(lifeCycleGenNode.getId(), searchVersionLabel);lifeCycleGenNode = VersionUtil.convertNodeRef(FrozenStateNodeRef); 아.! VersionUtil 은 "org.alfresco.repo.version.common" packa..

알프레스코 2017.10.20

불필요한 컨텐츠 검색인덱싱 막기

사용하다 보면, 임시 출판문서나, 굳이 검색이 되지 않아도 되는 컨텐츠들이 만들어집니다. 특히, 제가 만들고 있는 것들은 문서를 PDF로 컨버트하게 되어 있는데, 어차피 원본문서가 있기 때문에 굳이 만들어진 PDF 본문등으로 검색할 이유가 없습니다. 이런데, 문서가 만들어질때마다 동일한 PDF 문서들을 계속 인덱싱하게 되서 검색엔진 낭비가 됩니다. 요는, 몇가지 방법이 있습니다만 제가 보기엔 가장 효율적인 방법은 아래처럼, aspect 를 만들어서 검색이 필요하지 않은 TYPE에 mandatory 로 끼워 주면 됩니다. (속성별 검색설정하곤 다른거죠.) Do Not Index Control cm:indexControl false false cm:isIndexed 속성값을 false 로 하면 meta정보 ..

알프레스코 2017.09.14

MT(multi-tenancy) 환경에서의 bootstrap 문제.

MT 환경이 아닌경우, 아래와 같이 bootstrap 을 만들어서 사용자 기본 경로나, 카테고리등을 생성하고 있었으나, MT환경으로 전화되면서 추가 태넌트가 생길때 아래와 같은 bootstrap 이 작동되지 않는 문제가 생겼다. true REMOVE_EXISTING /${spaces.company_home.childname} alfresco/module/${project.artifactId}/bootstrap/companys_initilize.xml /cm:categoryRoot/cm:generalclassifiable alfresco/module/${project.artifactId}/bootstrap/wocategory_initilize.xml MT환경에서의 bootstrap 이 어떻게 작동하나 찾아..

알프레스코 2015.01.12

알프레스코의 티켓이 이유없이 없어지거나, 401 오류가 자주 발생한다면?

얼마전에 경험한 일입니다. 1시간정도 쓰다보면, 갑자기 401 세션 오류가 발생하면서, 로그아웃이 되는 현상이 자주 발견되었습니다. SSO는 물론이거니와, share 쪽의 session-timout 이나, alf 의 session-time 여러가지 설정을 확인해 봤지만, 한시간 정도에 끊길만한 껀덕지가 없더군요. 계속 이 문제 때문에 골머리를 썩고 있었더랩니다. 결국, share 는 alf 의 rest-api 를 호출할때마다, alf 에서 발행한 티켓을 붙여서 호출하고 있었고, 문제는 이 alf 의 티켓이 invalidation 된다는 이유였습니다. 그래서 alf 의 티켓 설정을 확인해서 아예 expire 모드를 false 로 영구보관을 설정했습니다. 그래도. 안되더군요.. 간헐적으로 짧은 시간이 지나면..

알프레스코 2014.10.22

알프레스코에 OAuth2 인증을 붙여보자.

다양한 방법을 강구 했으나, 최종 낙찰은 그냥 무식하게 Filter 하나 낑겨 넣고, 일단 OAuth2 쪽에 인증 확인하는 방법으로 구현했습니다. OAuth2 Provider 도 만들어야 해서 도무지 시간이 나질 않네요. 다 공개하긴 X팔리고, 걍 몇가지 코드만 적어 놓겠습니다. @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)servletRequest; HttpServletResponse res..

알프레스코 2014.08.12

알프레스코 로그인 Authentication Customizing

이번에 외부 레거시가 우리쪽 서버로 인증이 필요로 하게 되었습니다. OAuth2 표준 방식으로 연결한다는데, 아무리 찾아봐도 Alfresco 내부엔 OAuth Provider 가 안보이길래, 이참에 전체 분석을 좀 해봤습니다. 물론 짧은 시간내 대충 찾아본거라, 정답은 아니겠지만 구조 정도는 확인할 수 있어 보이긴 합니다. ㅎㅎ A : 사용자 폼전송시, Share 의 LoginController 를 통해, Alfresco의 인증모듈로 인증을 합니다. 이때, 데이터는 물론 Person 에 대한 ALF Content 를 사용함. (Alfresco 전용 티켓 발행 + Spring acegi를 통한 권한관리 FLOW) B : SSO AuthencationFilter 를 통해, 내부 인증과정을 우회하여 다른 별도..

알프레스코 2014.07.29

알프레스코 클러스터링 구성 정리

■ 주의사항 각 서버간의 DATETIME 동기화를 반드시 확인하자. (안맞음 헛짓거리 함)커뮤니케이션 버젼은 캐시 클러스터링을 지원하지 않는다. (4.1X 기준) 물론, ehcache 를 사용할 수 없고, default 캐시를 사용하도록 되어 있다. 즉슨, 아래 가이드대로 ehcache 설정을 하더라도 동작하지 않는다. 동작하도록 하는 방법은 enterprise 에서 일부 관련 소스와 jar 들을 빼오면 되나, 여기선 언급하지 않는다. :-)OS의 max fil open (ulimt) 반드시 확인할 것. (1024 보다 작으면 캐시가 비워진다)■ /shared/classes/alfresco/extension/ehcahe-custom.xml각 로컬서버 하위 캐싱을 RMI로 동기화 한다.캐싱자체가 동기화 되..

알프레스코 2014.07.24

알프레스코 ORACLE 파티셔닝 테스트

알프레스코의 기본 테이블인 ALF_NODE 와 ALF_PROPERITES 및 TRANSACTION 테이블은 과도한 데이터가 쌓일 경우, 조회뿐만 아니라, CRUD에서 WAIT 때문에, 도저히 성능이 안되더군요. 첨엔 Creator 기준으로 사용자별로 분배를 했지만, System/Admin 계정 문제등으로 제대로 파티셔닝이 안되어, 그냥 ID 기준으로 Hashing 을 사용하고, properties 는 alf_node 기준으로 FK대상으로 분배했습니다. 1. 주테이블을 파티셔닝으로 생성//1. alf_node 를 생성자별로 파티션을 분할함. CREATE TABLE ALFRESCO.ALF_NODE_PART2 ( ID NUMBER(19,0) NOT NULL, VERSION NUMBER(19,0) NOT NUL..

알프레스코 2014.07.24