• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Xstream 관련 ForbiddenClassException 또는 CannotResolveClassException 해결방법

22.09.07 20:09 작성 조회수 353

1

XStream 버전이 올라가면서 보안 관련 문제로 실습이 제대로 안되는 문제가 있었습니다.

간단하게 실습 자체만 하고 싶으신 분들은 XStream 모듈 버전을 낮추시면 됩니다.

implementation 'com.thoughtworks.xstream:xstream:1.4.16'

 

저의 경우 그렇게 하기는 싫어서 다른 방식으로 문제를 해결했습니다.

    public Unmarshaller itemUnmarshaller() {
        final Map<String, Class<?>> aliases = new HashMap<>();
        aliases.put("customer", Customer.class);
        aliases.put("id", Long.class);
        aliases.put("name", String.class);
        aliases.put("age", Integer.class);

        final XStreamMarshaller xStreamMarshaller = new XStreamMarshaller();
        final XStream stream = xStreamMarshaller.getXStream();
        stream.alias("customer", Customer.class); // CannotResolveClassException 해결방안
        stream.addPermission(AnyTypePermission.ANY); // ForbiddenClassException 해결방안
        xStreamMarshaller.setAliases(aliases);
        return xStreamMarshaller;
    }

와 같이 진행했을 때 저의 경우 문제 없이 작동했습니다.

답변 1

답변을 작성해보세요.

2

감사드립니다