question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

live reload broken with cxf extension

See original GitHub issue

In development mode, with live coding enabled, when I change something in source code and call any resource, server get broken with this error:

java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: Found 11 deployment problems: [1] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [2] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [3] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [4] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [5] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [6] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [7] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [8] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [9] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [10] Unsatisfied dependency for type java.lang.String and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.lang.String, qualifiers=[@ConfigProperty, @Any]] [11] Unsatisfied dependency for type java.util.List<java.lang.String> and qualifiers [@Default] - java member: io.quarkiverse.cxf.CXFClientInfo#<init>() - declared on CLASS bean [types=[io.quarkiverse.cxf.CXFClientInfo, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.cxf.CXFClientInfo] The following beans match by type, but none have matching qualifiers: - Bean [class=java.util.List, qualifiers=[@ConfigProperty, @Any]] at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1029) at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:241) at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:127) at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:411) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:972) at io.quarkus.builder.BuildContext.run(BuildContext.java:277) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452) at java.base/java.lang.Thread.run(Thread.java:834) at org.jboss.threads.JBossThread.run(JBossThread.java:479) (....)

So you need to manually restart the server with mvn quarkus:dev

(Can reproduce the error on quarkus 1.10.5.Final, OpenJDK 11 + quarkiverse/cxf v. 0.2 and v.0.3) and same issue with :

  • CXF 3.3.9
  • $ java -version
  • openjdk version “11.0.8” 2020-07-14
  • OpenJDK Runtime Environment GraalVM CE 20.2.0 (build 11.0.8+10-jvmci-20.2-b03)
  • OpenJDK 64-Bit Server VM GraalVM CE 20.2.0 (build 11.0.8+10-jvmci-20.2-b03, mixed mode, sharing)
  • Quarkus 1.10.3.FINAL
  • quarkiverse/cxf v0.3

this can be reproduce by cloning https://github.com/quarkiverse/quarkiverse-cxf mvn quarkus:dev then change a file in test and see reload faling.

the issue happend on client part (not server)

//processor
    @BuildStep
    @Record(ExecutionTime.RUNTIME_INIT)
    public void startClient(CXFRecorder recorder, CxfConfig cxfConfig, List<CxfWebServiceBuildItem> cxfWebServices,
            BuildProducer<SyntheticBeanBuildItem> synthetics) {
        for (CxfWebServiceBuildItem cxfWebService : cxfWebServices) {
            synthetics.produce(SyntheticBeanBuildItem.configure(CXFClientInfo.class).named(cxfWebService.getSei())
                    .supplier(recorder.cxfClientInfoSupplier(cxfWebService.getSei(),
                            cxfConfig,
                            cxfWebService.getSoapBinding(),
                            cxfWebService.getWsNamespace(),
                            cxfWebService.getWsName(),
                            cxfWebService.getClassNames()))
                    .unremovable()
                    .setRuntimeInit()
                    .done());
        }
    }

//recorder
// here we match config to jandex parsing data (annotation values)
public Supplier<CXFClientInfo> cxfClientInfoSupplier(String sei, CxfConfig cxfConfig,
            String soapBinding, String wsNamespace, String wsName, List<String> classNames) {
        LOGGER.warn("recorder CXFClientInfoSupplier");
        return new Supplier<CXFClientInfo>() {
            @Override
            public CXFClientInfo get() {
                // TODO suboptimal process. migrate to hashmap and get instead of loop
                for (Map.Entry<String, CxfEndpointConfig> webServicesByPath : cxfConfig.endpoints.entrySet()) {
                    CxfEndpointConfig cxfEndPointConfig = webServicesByPath.getValue();
                    String relativePath = webServicesByPath.getKey();
                    if (!cxfEndPointConfig.serviceInterface.isPresent()) {
                        continue;
                    }
                    String cfgSei = cxfEndPointConfig.serviceInterface.get();
                    if (cfgSei.equals(sei)) {
                        String endpointAddress = cxfEndPointConfig.clientEndpointUrl.orElse("http://localhost:8080");
                        if (!relativePath.equals("/") && !relativePath.equals("")) {
                            endpointAddress = endpointAddress.endsWith("/")
                                    ? endpointAddress.substring(0, endpointAddress.length() - 1)
                                    : endpointAddress;
                            endpointAddress = relativePath.startsWith("/") ? endpointAddress + relativePath
                                    : endpointAddress + "/" + relativePath;
                        }

                        CXFClientInfo cfg = new CXFClientInfo(sei,
                                endpointAddress,
                                cxfEndPointConfig.wsdlPath.orElse(null),
                                soapBinding,
                                wsNamespace,
                                wsName,
                                cxfEndPointConfig.endpointNamespace.orElse(null),
                                cxfEndPointConfig.endpointName.orElse(null),
                                cxfEndPointConfig.username.orElse(null),
                                cxfEndPointConfig.password.orElse(null),
                                classNames);
                        if (cxfEndPointConfig.inInterceptors.isPresent()) {
                            cfg.getInInterceptors().addAll(cxfEndPointConfig.inInterceptors.get());
                        }
                        if (cxfEndPointConfig.outInterceptors.isPresent()) {
                            cfg.getOutInterceptors().addAll(cxfEndPointConfig.outInterceptors.get());
                        }
                        if (cxfEndPointConfig.outFaultInterceptors.isPresent()) {
                            cfg.getOutFaultInterceptors().addAll(cxfEndPointConfig.outFaultInterceptors.get());
                        }
                        if (cxfEndPointConfig.inFaultInterceptors.isPresent()) {
                            cfg.getInFaultInterceptors().addAll(cxfEndPointConfig.inFaultInterceptors.get());
                        }
                        if (cxfEndPointConfig.features.isPresent()) {
                            cfg.getFeatures().addAll(cxfEndPointConfig.features.get());
                        }
                        return cfg;
                    }
                }
                LOGGER.warn("the service interface config is not found for : " + sei);
                return null;
            }
        };
    }

this error is originaly reported with https://github.com/quarkiverse/quarkiverse-cxf/issues/94

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:6 (6 by maintainers)

github_iconTop GitHub Comments

1reaction
dufolicommented, Aug 28, 2021

it is fixed since long time so let s close this one

0reactions
mkoubacommented, Feb 16, 2021

@mkouba I have added a dirty fix now. So you have to use version just before the fix : https://github.com/quarkiverse/quarkus-cxf/tree/09eb7e235f7d741632df468359bfdb78dfa581f3

git checkout 09eb7e235f7d741632df468359bfdb78dfa581f3 mvn clean install mvn quarkus:dev go to http://localhost:8080/ then modify a file to add space and save. and got to http://localhost:8080/ you will see Error restarting Quarkus java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors The stacktrace below has been reversed to show the root cause first. Click Here to see the original stacktrace

You should always run the dev mode with quarkus:dev -DnoDeps in a multi-module Maven project, see https://quarkus.io/guides/writing-extensions#multi-module-maven-projects-and-the-development-mode. However, for some reason it did not help in this particular case. I’m not sure why.

Furthermore, the following annotations are needless and should be removed: https://github.com/quarkiverse/quarkus-cxf/blob/09eb7e235f7d741632df468359bfdb78dfa581f3/runtime/src/main/java/io/quarkiverse/cxf/CXFClientInfo.java#L12-L13

Read more comments on GitHub >

github_iconTop Results From Across the Web

Live reload not working in Spring boot devtools - Stack Overflow
I using chrome browser but am not using any live reload browser extension in chrome. I run the application with this Powershell command ......
Read more >
Live reload broken - support - HUGO
I can't figure out why. I'm on. Hugo Static Site Generator v0.57.2/extended darwin/amd64 BuildDate: unknown. These are the messages I ...
Read more >
Webpack Live Reloading broke when I moved from VS 2019 ...
If that error occurs, Live Reload won't work. On occasions when the error does not occur, Live Reload does work. There's something about...
Read more >
Rohit Sharma's latest selfie ahead of fifth Test vs England sets ...
More details here - NEWS - Mayank Agarwal added to India's Test squad as a cover for captain Rohit Sharma, who tested positive...
Read more >
OnePlus Nord Buds review the cheap wireless earbuds to ...
The 12.4mm titanium drives live up to OnePlus's suggestion that they can deliver deep ... Please refresh the page and try again. window....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found