I have custom exception:
@WebFault(targetNamespace = "http://somenamespace/server/faults")
public class SoapBadRequestException extends Exception {
private static final long serialVersionUID = 1L;
private FaultBean faultBean;
public static class FaultBean {}
public SoapBadRequestException() { super(); }
public SoapBadRequestException(String message, FaultBean faultBean, Throwable cause) {
super(message, cause);
this.faultBean = faultBean;
}
public SoapBadRequestException(String message, FaultBean faultBean) {
super(message);
this.faultBean = faultBean;
}
public FaultBean getFaultInfo() { return faultBean; }
@Override
@XmlTransient
public StackTraceElement[] getStackTrace() { return super.getStackTrace(); }
@XmlTransient
@Override
public Throwable getCause() { return super.getCause(); }
}
And I have plugin configuration:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>schemagen-fault</id>
<goals>
<goal>schemagen</goal>
</goals>
</execution>
</executions>
<configuration>
<transformSchemas>
<transformSchema>
<uri>http://somenamespace/server/faults</uri>
<toPrefix>faults</toPrefix>
<toFile>faults_schema.xsd</toFile>
</transformSchema>
</transformSchemas>
<sources>
<source>
src/main/java/blabla/SoapBadRequestException.java
</source>
</sources>
</configuration>
</plugin>
And I get the following error:
java.lang.StackTraceElement is a non-static inner class, and JAXB can't handle those.
this problem is related to the following location:
at java.lang.StackTraceElement (Unknown Source)
at java.lang.Throwable.getStackTrace (Unknown Source)
at java.lang.Throwable (Unknown Source)
at java.lang.Exception (Unknown Source)
at java.lang.RuntimeException (Unknown Source)
at blabla.SoapBadRequestException(src/main/java/blabla/SoapBadRequestException.java:12)
As you can see, overriding doesn't help. I tried suggestions from here and gooooogled for a long time, but nothing helped.