上一主题: 常规下一主题: 密码以明文存储


暴露许多服务时出错

症状:

许多服务从 CA IdentityMinder 中暴露时,Axis2 会生成违反 JVM 编译规则的大存根类,并返回以下错误:

错误:代码对于 try 语句过大

解决方案:

当您收到这样的编译错误时,请执行要解决问题的以下步骤:

  1. 从以下示例目录中打开生成的存根类文件:
    <samples_dir>\wsdl2java\src\tew6\wsdl
    

    Axis2 采用以下格式生成存根类:

    <Service_name>Stub.java
    

    注意:从 WSDL 检索服务名称。

  2. 在存根类文件中,拆分 fromOM 和 populateFaults 方式。 以下脚本是来自存根类文件的 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
    

    编辑返回无错误。