I use the Lexis-Nexis SOAP service. Currently it works on Java 8 and Lexis-Nexis v11.
But then I upgraded the Java to version 17, and generated the Lexis-Nexis SOAP service client under version 12. On Java 17 it does not use the javax name space, but rather jakarta. The jakarta name does appear on the freshly generated SOAP client.
In order to generate the client app from WSDL document, I used the Apache CXF tool.
When I call the service client I ended up with this exception:
https.bridgerinsight_lexisnexis_com.bridgerinsight_web_services_interfaces_12_0.ISearchSearchServiceFaultFaultFaultMessage: The following error occurred while processing your request. Please contact your system administrator.
Invalid Credentials
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:119)
at com.sun.xml.ws.client.sei.StubHandler.readResponse(StubHandler.java:225)
at com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:176)
at com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:263)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:62)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:132)
at jdk.proxy2/jdk.proxy2.$Proxy133.search(Unknown Source)
at co.tulip.object.services.LNService.searchCompany(LNService.java:298)
at co.tulip.object.controller.TESTController.testMethod(TESTController.java:292)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:500)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)
at co.tulip.object.dev.MaintenanceModeFilter.doFilterInternal(MaintenanceModeFilter.java:91)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(
The live implementation, under version 11 and Java 8, uses the same configuration as does the one freshly generated, under v12, including credentials. But the freshly generated client app returns above error message.
-------------- Edits on 23/03/2023 ----------------
I used to get this error:
But I managed to go it away by including this dependecy:
implementation ('org.glassfish.metro:wssx-impl:4.0.2')
The dependencies that I use to run/access the SOAP service generated client are:
implementation('jakarta.xml.ws:jakarta.xml.ws-api:4.0.0')
implementation('jakarta.xml.bind:jakarta.xml.bind-api:4.0.0')
implementation('com.sun.xml.bind:jaxb-impl:4.0.0')
implementation ('org.apache.commons:commons-lang3:3.12.0')
implementation ('org.apache.cxf:cxf-core:4.0.0')
implementation ('org.apache.cxf.xjc-utils:cxf-xjc-runtime:4.0.0')
implementation ('org.glassfish.metro:wssx-impl:4.0.2')
implementation "jakarta.annotation:jakarta.annotation-api:2.1.1"
implementation 'org.apache.cxf:cxf-rt-frontend-jaxws:4.0.0'
compileOnly 'jakarta.servlet:jakarta.servlet-api:5.0.0'//because Apache Tomcat 10, and Jetty 11, support up to v5.0 of servlet standard
The dependecies that I used to generate the SOAP service client are:
cxfCodegen platform("org.apache.cxf:cxf-bom:4.0.0")
cxfCodegen "jakarta.annotation:jakarta.annotation-api:2.1.1"
cxfCodegen "jakarta.xml.ws:jakarta.xml.ws-api:4.0.0"
cxfCodegen('jakarta.xml.bind:jakarta.xml.bind-api:4.0.0')
cxfCodegen('com.sun.xml.bind:jaxb-impl:4.0.0')
//------------- XJC ------------------
cxfCodegen 'org.apache.cxf.xjc-utils:cxf-xjc-runtime:4.0.0'
cxfCodegen 'org.apache.cxf.xjcplugins:cxf-xjc-ts:4.0.0'
cxfCodegen 'jakarta.servlet:jakarta.servlet-api:5.0.0'//because Apache Tomcat 10, and Jetty 11, support up to v5.0 of servlet standard
//---------- Extra Libs ---------------
cxfCodegen 'org.apache.cxf:cxf-codegen-plugin:4.0.0'
cxfCodegen 'org.apache.cxf:cxf-tools-common:4.0.0'
cxfCodegen 'org.apache.cxf:cxf-core:4.0.0'
cxfCodegen 'org.apache.cxf:cxf-tools-wsdlto-core:4.0.0'
cxfCodegen 'org.apache.cxf:cxf-tools-wsdlto-frontend-jaxws:4.0.0'
cxfCodegen 'org.apache.commons:commons-lang3:3.12.0'
cxfCodegen 'org.apache.cxf:cxf-rt-wsdl:4.0.0'
cxfCodegen 'org.apache.cxf:cxf-tools-wsdlto-databinding-jaxb:4.0.0'
cxfCodegen 'org.apache.ws.xmlschema:xmlschema-core:2.3.0'
cxfCodegen 'wsdl4j:wsdl4j:1.6.3'
cxfCodegen 'org.apache.cxf:cxf-rt-bindings-soap:4.0.0'
cxfCodegen 'org.apache.cxf:cxf-tools-validator:4.0.0'
cxfCodegen 'org.apache.cxf:cxf-rt-frontend-jaxws:4.0.0'
cxfCodegen ('org.glassfish.metro:wssx-impl:4.0.2')
cxfCodegen 'org.apache.cxf:cxf-rt-security:4.0.0'
cxfCodegen 'org.apache.cxf:cxf:4.0.0'
The tool (Apache CXF) that I used to generate the SOAP service client:
import io.mateo.cxf.codegen.wsdl2java.Wsdl2Java
plugins {
id "io.mateo.cxf-codegen" version "1.0.3"
}
tasks.register("lexis-nexis-gen-12", Wsdl2Java) {
toolOptions {
wsdl.set(layout.projectDirectory.file("src/main/resources/XGServices.wsdl"))//the location of the WSDL document on the file-system
extraArgs.addAll(["-databinding", "jaxb"])
serviceName.set("XGServices")//the name of the service node under the WSDL document
outputDir.set(file("${buildDir}/../src/main/java"))//that's is the location where the generated files go to
//xjcArgs.add("-Xts")
verbose.set(true)
markGenerated.set(true)
}
}
xjcArgs.add("-Xts")
//Do I need this arg? Made no difference including or excluding it
Similar existing issue comes here:
What might be the problem, in this case?
Best regards