이전 항목: 일반다음 항목: 암호가 일반 텍스트로 저장됨


여러 서비스를 표시할 때 오류 발생

증상:

CA IdentityMinder에서 여러 서비스가 표시될 때 Axis2가 JVM 컴파일 규칙을 위반하는 큰 stub 클래스를 생성하고 다음과 같은 오류가 반환됩니다.

error: code too large for try statement(오류: try 문에 대한 코드가 너무 큽니다.)

해결책:

이러한 컴파일 오류가 표시되면 다음 단계를 수행하여 문제를 해결하십시오.

  1. 다음 샘플 디렉터리에서 생성된 Stub 클래스 파일을 엽니다.
    <samples_dir>\wsdl2java\src\tew6\wsdl
    

    Axis2가 다음 형식으로 stub 클래스를 생성합니다.

    <Service_name>Stub.java
    

    참고: WSDL에서 서비스 이름을 가져오십시오.

  2. stub 클래스 파일에서 fromOM과 populateFaults 메서드를 분리합니다. 다음 스크립트는 stub 클래스 파일의 fromOM 메서드 예제입니다.
    public org.apache.xmlbeans.Xmlobject fromOM (
    org.apache.axiom.om.OMElement param,
    java.lang.Class type,
    java.util.Map extraNamespaces) throws
    org.apache.axis2.AxisFault {
    try {
    .......
    .......
    .......
    }catch (java.lang.Exception e) {
    throw org.apache.axis2.AxisFault.makeFault(e);
    }
    return null;
    }
    
  3. 메서드 스크립트를 두 개로 분리한 후 다른 한쪽의 이름을 (예를 들어) fromOMExtended로 지정합니다.
  4. fromOM 메서드에서 새로 생성된 메서드를 호출합니다. 다음 스크립트는 수정된 fromOM 메서드의 예제입니다.
    public org.apache.xmlbeans.Xmlobject fromOM (
    org.apache.axiom.om.OMElement param,
    java.lang.Class type,
    java.util.Map extraNamespaces) throws
    org.apache.axis2.AxisFault {
    try {
    .......
    .......
    .......
    }catch (java.lang.Exception e) {
    throw org.apache.axis2.AxisFault.makeFault(e);
    }
    //invoking the new method
    return this. fromOMExtended(param, type, extraNamespaces);
    }
    
  5. populateFaults 메서드에 대해 3 단계 및 4 단계를 반복합니다.
  6. 변경 내용을 저장하고 변경 내용을 컴파일하기 위해 샘플 디렉터리 위치에서 다음 명령을 실행합니다.
    sample_dir_location> ant -Dnowsdlgen=true
    

    컴파일에서 오류가 반환되지 않습니다.