0

We have a webservice that works and has been working fine. We call it from our EAR project and it works fine in localhost in RAD as well as from the server. However, now I'm trying to call it from a junit project and it's failing with an AssertionError with no message to help me debug it.

Code:

    public ReportServiceGeneratedClient(String url) throws MalformedURLException {
        SubmissionWSService service = new SubmissionWSService(new URL(url), new QName("http://wsdl.report.changed.for.privacy/", "SubmissionWSService"));
        reportService = service.getSubmissionWSPort(); //kaboom here
    }
java.lang.AssertionError
    at com.ibm.xml.xlxp2.runtime.VMContext.stopSchemaAssessment(VMContext.java:609)
    at com.ibm.xml.xlxp2.api.jaxb.JAXBXMLStreamReader.unmarshal(JAXBXMLStreamReader.java:127)
    at com.ibm.xml.xlxp2.jaxb.unmarshal.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:256)
    at com.sun.xml.internal.ws.assembler.MetroConfigLoader.loadMetroConfig(MetroConfigLoader.java:256)
    at com.sun.xml.internal.ws.assembler.MetroConfigLoader.init(MetroConfigLoader.java:143)
    at com.sun.xml.internal.ws.assembler.MetroConfigLoader.<init>(MetroConfigLoader.java:116)
    at com.sun.xml.internal.ws.assembler.TubelineAssemblyController.getTubeCreators(TubelineAssemblyController.java:90)
    at com.sun.xml.internal.ws.assembler.MetroTubelineAssembler.createClient(MetroTubelineAssembler.java:115)
    at com.sun.xml.internal.ws.client.Stub.createPipeline(Stub.java:340)
    at com.sun.xml.internal.ws.client.Stub.<init>(Stub.java:307)
    at com.sun.xml.internal.ws.client.Stub.<init>(Stub.java:240)
    at com.sun.xml.internal.ws.client.Stub.<init>(Stub.java:255)
    at com.sun.xml.internal.ws.client.sei.SEIStub.<init>(SEIStub.java:96)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getStubHandler(WSServiceDelegate.java:827)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:816)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:449)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:417)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:399)
    at javax.xml.ws.Service.getPort(Service.java:130)

I found a stackoverflow claiming that a property was needed, but I tried both of these and neither solved my problem, though I also didn't get the message that poster was getting.

        System.setProperty("javax.xml.accessExternalSchema", "all");
        System.setProperty("javax.xml.accessExternalDTD", "all");

The code and webservice work in other contexts, so I'm sure it's that I'm not setting the environment right, but the lack of message leaves me with no real clues. Anyone know anything that can help me here?

Entropy
  • 1,219
  • 6
  • 21
  • 45

1 Answers1

0

I had this exact problem and fixed it by passing the following JVM arg to the JUnit test (e.g. in Run Configurations):

-Dcom.ibm.xml.xlxp.jaxb.opti.level=0

This will force the use of the JRE JAXB library (instead of the IBM one). I never got to the root cause but I guessed it was some JRE/IBM library version incompatibility.

Simon
  • 37
  • 5