Thanks for getting back to me…

It’s not with the tools. It occurs when trying to run a test client program
that makes JAX-WS call

Exception info and code block are below.

Hopefully this helps answer your question



Connected to the target VM, address: '127.0.0.1:57317', transport: 'socket'

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further
details.

Nov 20, 2023 4:32:49 PM
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean
buildServiceFromWSDL

INFO: Creating Service {http://ws.jaxws.example.com/}EmployeeService from
WSDL:http://localhost:8080/employee-service/EmployeeService?wsdl

employeeServiceService:
com.example.jaxws.ws.EmployeeService_Service@6e0ff644

employeeServiceProxy: org.apache.cxf.jaxws.JaxWsClientProxy@5949eba8

Nov 20, 2023 4:33:03 PM
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean
buildServiceFromClass

INFO: Creating Service {
http://localhost:8080/employee-service/EmployeeService}EmployeeService from
class com.example.jaxws.ws.EmployeeService

Nov 20, 2023 4:33:03 PM
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean
buildServiceFromClass

INFO: Creating Service {
http://localhost:8080/employee-service/EmployeeService}EmployeeService from
class com.example.jaxws.ws.EmployeeService

Nov 20, 2023 4:36:48 PM org.apache.cxf.phase.PhaseInterceptorChain
doDefaultLogging



*WARNING: Interceptor for
{http://localhost:8080/employee-service/EmployeeService}EmployeeService#{http://ws.jaxws.example.com/}getEmployee
<http://localhost:8080/employee-service/EmployeeService%7DEmployeeService#%7Bhttp://ws.jaxws.example.com/%7DgetEmployee>
has
thrown exception, unwinding now*

*java.lang.NullPointerException: Cannot invoke
"org.apache.cxf.transport.http.Address.getURI()" because "address" is null*

                at
org.apache.cxf.transport.http.HttpClientHTTPConduit.setupConnection(HttpClientHTTPConduit.java:161)

                at
org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:551)

                at
org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:47)

                at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)

                at
org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:528)

                at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:439)

                at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:354)

                at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:312)

                at
org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)

                at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)

                at jdk.proxy2/jdk.proxy2.$Proxy34.getEmployee(Unknown
Source)

*                at
com.example.jaxws.ws.client.WSClient.main(WSClient.java:49)    —> **TEST
CLIENT APP W/ A main() method – error triggered on this line 49 – see code
below *



jakarta.xml.ws.WebServiceException: java.lang.NullPointerException: Cannot
invoke "org.apache.cxf.transport.http.Address.getURI()" because "address"
is null

                at
org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:193)

                at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)

                at jdk.proxy2/jdk.proxy2.$Proxy34.getEmployee(Unknown
Source)

                at
com.example.jaxws.ws.client.WSClient.main(WSClient.java:49)

Caused by: java.lang.NullPointerException: Cannot invoke
"org.apache.cxf.transport.http.Address.getURI()" because "address" is null

                at
org.apache.cxf.transport.http.HttpClientHTTPConduit.setupConnection(HttpClientHTTPConduit.java:161)

                at
org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:551)

                at
org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:47)

                at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)

                at
org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:528)

                at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:439)

                at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:354)

                at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:312)

                at
org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)

                at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)

                ... 2 more

Disconnected from the target VM, address: '127.0.0.1:57317', transport:
'socket'





*TEST CODE BEING USED*



package com.example.jaxws.ws.client;

import com.example.jaxws.ws.Employee;
import com.example.jaxws.ws.EmployeeService_Service;
import jakarta.xml.ws.Service;
import jakarta.xml.ws.soap.SOAPBinding;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import java.net.URL;


public final class WSClient {
    private static final Logger *logger *= LogManager.*getLogger*(WSClient.
class);
    private static URL *url*;

    static {
        try {
            *url *= new URL("
http://localhost:8080/employee-service/EmployeeService?wsdl";);
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
    }
    //private static QName qName = new QName("
http://localhost:8080/employee-service/EmployeeService";);

    private static final QName
*SERVICE_NAME            *= new QName("
http://localhost:8080/employee-service/EmployeeService";, "EmployeeService");
    private static final QName
*PORT_NAME            *= new QName("
http://localhost:8080/employee-service/EmployeeService";,
"EmployeeServicePort");
    WSClient() {

    }

    public static void main(String[] args) {
        try {


            EmployeeService_Service employeeServiceService = new
EmployeeService_Service(*url*);
            com.example.jaxws.ws.EmployeeService employeeServiceProxy =
employeeServiceService.getEmployeeServiceImplPort();
            System.*out*.println("employeeServiceService: " +
employeeServiceService.toString());
            System.*out*.println("employeeServiceProxy: " +
employeeServiceProxy.toString());
            Service service = Service.*create*(*SERVICE_NAME*);
            String endpointAddress = "
http://localhost:8080/employee-service/EmployeeService";;
            service.addPort(*PORT_NAME*, SOAPBinding.*SOAP11HTTP_BINDING*,
endpointAddress);

            com.example.jaxws.ws.EmployeeService employeeService =
service.getPort(com.example.jaxws.ws.EmployeeService.class);
            *Employee employee = employeeService.getEmployee(9000);*
—> Exception
is triggered as soon as an attempt to call the method on the Proxy instance…
 this is line 49 in the stacktrace
            System.*out*.println("com.example.jaxws.ws.Employee:" +
employee.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}







On Mon, Nov 20, 2023 at 21:45 Jim Ma <mail2ji...@gmail.com> wrote:

> When does this error happen? Still in code generation with cxf tools ?
> It seems this is generated from the java classes instead of from the wsdl
> file . Did you pass the correct wsdl url to the cxf tool ?
>
>
> On Mon, Nov 20, 2023 at 11:57 AM Mark Streit <mcs...@gmail.com> wrote:
>
>> Jim Ma
>>
>> Many THANKS for pointing this out. Indeed, when I removed the original
>> entry that was entangled in Metro JAX-WS and replaced w/ the CXF
>> dependency.... *it processed MUCH farther*.  Instead of failing where it
>> was originally trying to find a "Provider", it now passes much further to
>> the point of NOW making the call attempt but I am still seeing it error
>> in a different place in the code...
>>
>> Nov 19, 2023 10:42:16 PM
>> org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean
>> buildServiceFromClass
>>
>> INFO: Creating Service {
>> http://localhost:8080/employee-service/EmployeeService}EmployeeService from
>> class com.example.jaxws.ws.EmployeeService
>>
>> Nov 19, 2023 10:42:16 PM
>> org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean
>> buildServiceFromClass
>>
>> INFO: Creating Service {
>> http://localhost:8080/employee-service/EmployeeService}EmployeeService from
>> class com.example.jaxws.ws.EmployeeService
>>
>> Nov 19, 2023 10:42:16 PM org.apache.cxf.phase.PhaseInterceptorChain
>> doDefaultLogging
>>
>> WARNING: Interceptor for {
>> http://localhost:8080/employee-service/EmployeeService}EmployeeService#{http://ws.jaxws.example.com/}getEmployee
>>  has
>> thrown exception, unwinding now
>>
>> java.lang.NullPointerException: Cannot invoke
>> "org.apache.cxf.transport.http.Address.getURI()" because "address" is null
>>
>>                 at
>> org.apache.cxf.transport.http.HttpClientHTTPConduit.setupConnection(HttpClientHTTPConduit.java:161)
>>
>>                 at
>> org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:551)
>>
>>
>>
>> I have resumed a Google hunt for the error message shown above, but have
>> yet to find anything concrete beyond the fact that this error has been seen
>> by others ...
>>
>> This is the furthest I have been able to get the test client to go so *thank
>> you* immensely for the valuable tip regarding the dependency change... I
>> was fighting with the original Provider issue for over a week making
>> countless changes with no success...
>>
>>
>> Mark
>>
>>
>>
>>
>> On Sun, Nov 12, 2023 at 8:10 PM Jim Ma <mail2ji...@gmail.com> wrote:
>>
>>> Your pom has the metro and this is problematic to work with CXF's tool.
>>> Please replace this dependency with CXF's.
>>>       <dependency>
>>>
>>>       <groupId>com.sun.xml.ws</groupId>
>>>       <artifactId>rt</artifactId>
>>>       <version>2.3.2</version>
>>>       <scope>runtime</scope>
>>>    </dependency>
>>>
>>>
>>> On Sat, Nov 11, 2023 at 9:35 AM Mark Streit <mcs...@gmail.com> wrote:
>>>
>>> > Hello All
>>> >
>>> > I'm fairly well-versed in JAX-WS web services going back to the days
>>> of the
>>> > original JSR-224 spec and the "Sun Metro" JAX-WS RT and API stack. I
>>> have
>>> > not used JAX-WS services and tools since we moved to Spring Boot
>>> > around 2016.  I'm now finding myself working on a project that uses
>>> WildFly
>>> > (v27 specifically) and SOAP web services.
>>> >
>>> > While doing a very simple POC exercise, I have a JAX-WS web service
>>> > packaged in a WAR (build w/ Maven) and deployed and running on WildFly
>>> - no
>>> > issues there. I can get back the WSDL document from the "running"
>>> service
>>> > on port 8080. (A default standard instance of WildFly running - *JDK 17
>>> > Corretto)*.  I've also discovered that the tools in WildFly (such as
>>> > *wsconsume* to generate java artifacts, *are using CXF* under the hood
>>> -
>>> > "wsdl2Java"?).
>>> >
>>> >
>>> > **** This class was generated by Apache CXF 3.5.2-jbossorg-4*
>>> >
>>> > Hence I'm taking a longshot chance asking this question here as I've
>>> been
>>> > struggling to get a JAX-WS Client built that will run from a simple
>>> Java
>>> > standalone code block w/ a main().  Nothing more complex than that. I
>>> have
>>> > posted the issue to the Stackoverflow forum to see if anyone has seen
>>> > something similar.
>>> >
>>> > 1) the client code is extremely simple and is attempted to be run from
>>> > inside the IntelliJ IDE.
>>> > 2) I have debugged the client code stepping into the code where it
>>> blows
>>> > apart w/ the message seen below.
>>> >
>>> >
>>> >
>>> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
>>> >
>>> >     at
>>> >
>>> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
>>> >
>>> >     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
>>> >
>>> >     at java.base/java.lang.Class.forName0(Native Method)
>>> >
>>> >     at java.base/java.lang.Class.forName(Class.java:375)
>>> >
>>> >     at jakarta.xml.ws.spi.FactoryFinder.isOsgi(FactoryFinder.java:214)
>>> >
>>> >     at jakarta.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:124)
>>> >
>>> >     at jakarta.xml.ws.spi.Provider.provider(Provider.java:64)
>>> >
>>> >     at jakarta.xml.ws.Service.<init>(Service.java:82)
>>> >
>>> >     at jakarta.xml.ws.Service.create(Service.java:735)
>>> >
>>> >     at com.example.jaxws.ws.client.WSClient.main(WSClient.java:21)
>>> >
>>> > jakarta.xml.ws.WebServiceException: Unable to createEndpointReference
>>> > Provider
>>> >
>>> >     at jakarta.xml.ws.spi.Provider.provider(Provider.java:68)
>>> >
>>> >     at jakarta.xml.ws.Service.<init>(Service.java:82)
>>> >
>>> >     at jakarta.xml.ws.Service.create(Service.java:735)
>>> >
>>> >     at com.example.jaxws.ws.client.WSClient.main(WSClient.java:21)
>>> >
>>> > Caused by: java.lang.ClassCastException: class
>>> > com.sun.xml.ws.spi.ProviderImpl cannot be cast to class
>>> > jakarta.xml.ws.spi.Provider (com.sun.xml.ws.spi.ProviderImpl and
>>> > jakarta.xml.ws.spi.Provider are in unnamed module of loader 'app')
>>> >
>>> >     at jakarta.xml.ws.spi.Provider.provider(Provider.java:64)
>>> >
>>> >
>>> > *Everything is described on this
>>> > post
>>> >
>>> https://stackoverflow.com/questions/77456843/jax-ws-web-service-client-jdk-17-simple-java-client-w-a-main-fails
>>> > <
>>> >
>>> https://stackoverflow.com/questions/77456843/jax-ws-web-service-client-jdk-17-simple-java-client-w-a-main-fails
>>> > >
>>> >  The post includes the relevant Java code blocks and the pom.xml
>>> content. *
>>> >
>>> >
>>> > 3) The client code was built w/ Maven using a terminal window and
>>> typical
>>> > mvn clean install -U
>>> > 4) A JAR file is created - when you right-click and run it from inside
>>> the
>>> > IDE, it finds main() and hits the breakpoints as expected...
>>> >
>>> > It's clearly a runtime classpath problem or mistake that is causing the
>>> > issue and I have spent hours changing attributes in the pom.xml,
>>> adjusting
>>> > the "Run Configuration" within IntelliJ  --- all to simply land on the
>>> same
>>> > Exception when it tries to create the proxy object for the client side
>>> > call.
>>> >
>>> > There have been many posts re: the repackaging of the JAX-WS components
>>> > from "javax" to "jakartaee" following the release of JDK 7 or 8 *and
>>> > onward*.
>>> > It's not clear that this has anything to do with it since compile time
>>> > building is always successful.
>>> >
>>> > While I don't suspect this is a "CXF Problem" directly, I am hoping
>>> someone
>>> > may be familiar w/ such an exception.
>>> >
>>> >
>>> > Thanks for any input
>>> >
>>> > Mark
>>> >
>>>
>>

Reply via email to