lifletay에서 포틀릿간에 공유 사용자 지정 개체를 보내려고 할 때 심각한 문제가 있습니다. 필자는 Type MyCustomClass의 객체를로드하고 요청 객체에 매개 변수로 삽입하는 서블릿 필터가있는 Hook Plugin을 가지고 있습니다.liferay의 포틀릿에서 사용자 지정 개체 보내기
포틀릿의 render()에서이 객체를 읽으려고하면 객체를 같은 클래스로 캐스팅하고 있지만 ClassCastException이 발생합니다.
내가하는 Liferay 플러그인 다른 컨텍스트를 이해하고, 내가 이미이 같은 콩과 포틀릿에서 객체를로드하기 전에 클래스 로더를 변경하려고 : 그러나
ClassLoader portalcl = PortalClassLoaderUtil.getClassLoader();
ClassLoader currentcl = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(portalcl);
//do my stuff
Thread.currentThread().setContextClassLoader(currentcl);
, 그것은 문제를 해결하고,하지 않았다 내가 문제를 해결하기 위해 찾은 유일한 방법은 json 문자열로 객체를 직렬화하고 필요할 때마다 비 직렬화하는 것입니다.
이 다소 불충분하지 않습니까? 누구든지 더 나은 해결책을 알고 있습니까?
감사합니다, DS
글쎄, 네가 옳은 것 같아, 가장 합법적 인 접근 방법 인 것 같지만, 우리 시스템 개발자가 초기 단계에 있기 때문에 약간의 배포 과정을 복잡하게 만들고, 그 클래스들을 제비. 그래서 json을 사용하여 하나의 포틀릿에서 다른 포틀릿으로 객체를 전송했습니다.보다 견고한 상태에 도달하거나 생명주기가 끝날 때까지 객체를 전송했습니다. 귀하의 의견에 감사드립니다! – madoke
이 스레드는 약간 오래된 것이지만 우리는 모든 콩을 항아리로 옮기고 당신이 제안한 것처럼 tomcat의 lib 디렉토리에 그 항아리를 놓는 방법으로 끝냈습니다. – madoke