Details

  • User impact:
    Medium
  • Configuration:
    Hide

    <flow name="myFlow">
    <inbound-endpoint address="${myAddress}">
    <cxf:jaxws-service
    serviceClass="MyClass"
    enableMuleSoapHeaders="false" validationEnabled="true">
    </cxf:jaxws-service>
    </inbound-endpoint>
    <component>
    <spring-object bean="myBean" />
    </component>
    </flow>

    Show
    <flow name="myFlow"> <inbound-endpoint address="${myAddress}"> <cxf:jaxws-service serviceClass="MyClass" enableMuleSoapHeaders="false" validationEnabled="true"> </cxf:jaxws-service> </inbound-endpoint> <component> <spring-object bean="myBean" /> </component> </flow>
  • Log Output:
    Hide
    org.mule.api.lifecycle.LifecycleException: Failed to start inbound endpoint "endpoint.jetty.ssl.localhost.8090.MyPath"
    at org.mule.endpoint.DefaultInboundEndpoint.start(DefaultInboundEndpoint.java:116)
    at org.mule.construct.AbstractFlowConstruct.startIfStartable(AbstractFlowConstruct.java:362)
    at org.mule.construct.AbstractFlowConstruct$2.onTransition(AbstractFlowConstruct.java:144)
    at org.mule.construct.AbstractFlowConstruct$2.onTransition(AbstractFlowConstruct.java:139)
    at org.mule.lifecycle.AbstractLifecycleManager.invokePhase(AbstractLifecycleManager.java:141)
    at org.mule.construct.FlowConstructLifecycleManager.fireStartPhase(FlowConstructLifecycleManager.java:95)
    at org.mule.construct.AbstractFlowConstruct.start(AbstractFlowConstruct.java:138)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.mule.lifecycle.phases.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:225)
    at org.mule.lifecycle.RegistryLifecycleManager$RegistryLifecycleCallback.onTransition(RegistryLifecycleManager.java:276)
    at org.mule.lifecycle.RegistryLifecycleManager.invokePhase(RegistryLifecycleManager.java:155)
    at org.mule.lifecycle.RegistryLifecycleManager.fireLifecycle(RegistryLifecycleManager.java:126)
    at org.mule.registry.AbstractRegistryBroker.fireLifecycle(AbstractRegistryBroker.java:80)
    at org.mule.registry.MuleRegistryHelper.fireLifecycle(MuleRegistryHelper.java:121)
    at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:94)
    at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:90)
    at org.mule.lifecycle.MuleContextLifecycleManager.invokePhase(MuleContextLifecycleManager.java:72)
    at org.mule.lifecycle.MuleContextLifecycleManager.fireLifecycle(MuleContextLifecycleManager.java:64)
    at org.mule.DefaultMuleContext.start(DefaultMuleContext.java:202)
    at org.mule.tck.AbstractMuleTestCase.setUp(AbstractMuleTestCase.java:470)
    at junit.framework.TestCase.runBare(TestCase.java:132)
    at org.mule.tck.AbstractMuleTestCase.runBare(AbstractMuleTestCase.java:303)
    at junit.framework.TestResult$1.protect(TestResult.java:110)
    at junit.framework.TestResult.runProtected(TestResult.java:128)
    at junit.framework.TestResult.run(TestResult.java:113)
    at junit.framework.TestCase.run(TestCase.java:124)
    at org.mule.tck.AbstractMuleTestCase.run(AbstractMuleTestCase.java:282)
    at junit.framework.TestSuite.runTest(TestSuite.java:243)
    at junit.framework.TestSuite.run(TestSuite.java:238)
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    Caused by: org.mule.api.lifecycle.InitialisationException: null
    at org.mule.module.cxf.config.FlowConfiguringMessageProcessor.initialise(FlowConfiguringMessageProcessor.java:98)
    at org.mule.processor.chain.AbstractMessageProcessorChain.initialise(AbstractMessageProcessorChain.java:103)
    at org.mule.processor.chain.AbstractMessageProcessorChain.initialise(AbstractMessageProcessorChain.java:103)
    at org.mule.endpoint.DefaultInboundEndpoint.createMessageProcessorChain(DefaultInboundEndpoint.java:157)
    at org.mule.endpoint.AbstractEndpoint.getMessageProcessorChain(AbstractEndpoint.java:516)
    at org.mule.endpoint.DefaultInboundEndpoint.start(DefaultInboundEndpoint.java:98)
    ... 38 more
    Caused by: java.lang.NullPointerException
    at org.apache.cxf.aegis.type.basic.BeanTypeInfo$1.compare(BeanTypeInfo.java:307)
    at org.apache.cxf.aegis.type.basic.BeanTypeInfo$1.compare(BeanTypeInfo.java:306)
    at java.util.Arrays.mergeSort(Arrays.java:1270)
    at java.util.Arrays.mergeSort(Arrays.java:1282)
    at java.util.Arrays.mergeSort(Arrays.java:1281)
    at java.util.Arrays.mergeSort(Arrays.java:1281)
    at java.util.Arrays.sort(Arrays.java:1210)
    at org.apache.cxf.aegis.type.basic.BeanTypeInfo.initializeProperties(BeanTypeInfo.java:305)
    at org.apache.cxf.aegis.type.basic.BeanTypeInfo.<init>(BeanTypeInfo.java:75)
    at org.apache.cxf.aegis.type.java5.AnnotatedTypeInfo.<init>(AnnotatedTypeInfo.java:41)
    at org.apache.cxf.aegis.type.java5.AnnotatedTypeInfo.<init>(AnnotatedTypeInfo.java:36)
    at org.apache.cxf.aegis.type.java5.Java5TypeCreator.createDefaultType(Java5TypeCreator.java:208)
    at org.apache.cxf.aegis.type.XMLTypeCreator.createDefaultType(XMLTypeCreator.java:398)
    at org.apache.cxf.aegis.type.AbstractTypeCreator.createTypeForClass(AbstractTypeCreator.java:130)
    at org.apache.cxf.aegis.type.AbstractTypeCreator.createType(AbstractTypeCreator.java:390)
    at org.apache.cxf.aegis.type.basic.BeanTypeInfo.getType(BeanTypeInfo.java:192)
    at org.apache.cxf.aegis.type.basic.BeanType.getDependencies(BeanType.java:532)
    at org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDatabinding.java:394)
    at org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDatabinding.java:399)
    at org.apache.cxf.aegis.databinding.AegisDatabinding.initializeMessage(AegisDatabinding.java:370)
    at org.apache.cxf.aegis.databinding.AegisDatabinding.initializeOperation(AegisDatabinding.java:273)
    at org.apache.cxf.aegis.databinding.AegisDatabinding.initialize(AegisDatabinding.java:239)
    at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:442)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:505)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:242)
    at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
    at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:148)
    at org.mule.module.cxf.builder.AbstractInboundMessageProcessorBuilder.build(AbstractInboundMessageProcessorBuilder.java:199)
    at org.mule.module.cxf.builder.AbstractInboundMessageProcessorBuilder.build(AbstractInboundMessageProcessorBuilder.java:56)
    at org.mule.module.cxf.config.FlowConfiguringMessageProcessor.initialise(FlowConfiguringMessageProcessor.java:94)
    ... 43 more
    Show
    org.mule.api.lifecycle.LifecycleException: Failed to start inbound endpoint "endpoint.jetty.ssl.localhost.8090.MyPath" at org.mule.endpoint.DefaultInboundEndpoint.start(DefaultInboundEndpoint.java:116) at org.mule.construct.AbstractFlowConstruct.startIfStartable(AbstractFlowConstruct.java:362) at org.mule.construct.AbstractFlowConstruct$2.onTransition(AbstractFlowConstruct.java:144) at org.mule.construct.AbstractFlowConstruct$2.onTransition(AbstractFlowConstruct.java:139) at org.mule.lifecycle.AbstractLifecycleManager.invokePhase(AbstractLifecycleManager.java:141) at org.mule.construct.FlowConstructLifecycleManager.fireStartPhase(FlowConstructLifecycleManager.java:95) at org.mule.construct.AbstractFlowConstruct.start(AbstractFlowConstruct.java:138) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.mule.lifecycle.phases.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:225) at org.mule.lifecycle.RegistryLifecycleManager$RegistryLifecycleCallback.onTransition(RegistryLifecycleManager.java:276) at org.mule.lifecycle.RegistryLifecycleManager.invokePhase(RegistryLifecycleManager.java:155) at org.mule.lifecycle.RegistryLifecycleManager.fireLifecycle(RegistryLifecycleManager.java:126) at org.mule.registry.AbstractRegistryBroker.fireLifecycle(AbstractRegistryBroker.java:80) at org.mule.registry.MuleRegistryHelper.fireLifecycle(MuleRegistryHelper.java:121) at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:94) at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:90) at org.mule.lifecycle.MuleContextLifecycleManager.invokePhase(MuleContextLifecycleManager.java:72) at org.mule.lifecycle.MuleContextLifecycleManager.fireLifecycle(MuleContextLifecycleManager.java:64) at org.mule.DefaultMuleContext.start(DefaultMuleContext.java:202) at org.mule.tck.AbstractMuleTestCase.setUp(AbstractMuleTestCase.java:470) at junit.framework.TestCase.runBare(TestCase.java:132) at org.mule.tck.AbstractMuleTestCase.runBare(AbstractMuleTestCase.java:303) at junit.framework.TestResult$1.protect(TestResult.java:110) at junit.framework.TestResult.runProtected(TestResult.java:128) at junit.framework.TestResult.run(TestResult.java:113) at junit.framework.TestCase.run(TestCase.java:124) at org.mule.tck.AbstractMuleTestCase.run(AbstractMuleTestCase.java:282) at junit.framework.TestSuite.runTest(TestSuite.java:243) at junit.framework.TestSuite.run(TestSuite.java:238) at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: org.mule.api.lifecycle.InitialisationException: null at org.mule.module.cxf.config.FlowConfiguringMessageProcessor.initialise(FlowConfiguringMessageProcessor.java:98) at org.mule.processor.chain.AbstractMessageProcessorChain.initialise(AbstractMessageProcessorChain.java:103) at org.mule.processor.chain.AbstractMessageProcessorChain.initialise(AbstractMessageProcessorChain.java:103) at org.mule.endpoint.DefaultInboundEndpoint.createMessageProcessorChain(DefaultInboundEndpoint.java:157) at org.mule.endpoint.AbstractEndpoint.getMessageProcessorChain(AbstractEndpoint.java:516) at org.mule.endpoint.DefaultInboundEndpoint.start(DefaultInboundEndpoint.java:98) ... 38 more Caused by: java.lang.NullPointerException at org.apache.cxf.aegis.type.basic.BeanTypeInfo$1.compare(BeanTypeInfo.java:307) at org.apache.cxf.aegis.type.basic.BeanTypeInfo$1.compare(BeanTypeInfo.java:306) at java.util.Arrays.mergeSort(Arrays.java:1270) at java.util.Arrays.mergeSort(Arrays.java:1282) at java.util.Arrays.mergeSort(Arrays.java:1281) at java.util.Arrays.mergeSort(Arrays.java:1281) at java.util.Arrays.sort(Arrays.java:1210) at org.apache.cxf.aegis.type.basic.BeanTypeInfo.initializeProperties(BeanTypeInfo.java:305) at org.apache.cxf.aegis.type.basic.BeanTypeInfo.<init>(BeanTypeInfo.java:75) at org.apache.cxf.aegis.type.java5.AnnotatedTypeInfo.<init>(AnnotatedTypeInfo.java:41) at org.apache.cxf.aegis.type.java5.AnnotatedTypeInfo.<init>(AnnotatedTypeInfo.java:36) at org.apache.cxf.aegis.type.java5.Java5TypeCreator.createDefaultType(Java5TypeCreator.java:208) at org.apache.cxf.aegis.type.XMLTypeCreator.createDefaultType(XMLTypeCreator.java:398) at org.apache.cxf.aegis.type.AbstractTypeCreator.createTypeForClass(AbstractTypeCreator.java:130) at org.apache.cxf.aegis.type.AbstractTypeCreator.createType(AbstractTypeCreator.java:390) at org.apache.cxf.aegis.type.basic.BeanTypeInfo.getType(BeanTypeInfo.java:192) at org.apache.cxf.aegis.type.basic.BeanType.getDependencies(BeanType.java:532) at org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDatabinding.java:394) at org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDatabinding.java:399) at org.apache.cxf.aegis.databinding.AegisDatabinding.initializeMessage(AegisDatabinding.java:370) at org.apache.cxf.aegis.databinding.AegisDatabinding.initializeOperation(AegisDatabinding.java:273) at org.apache.cxf.aegis.databinding.AegisDatabinding.initialize(AegisDatabinding.java:239) at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:442) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:505) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:242) at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101) at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:148) at org.mule.module.cxf.builder.AbstractInboundMessageProcessorBuilder.build(AbstractInboundMessageProcessorBuilder.java:199) at org.mule.module.cxf.builder.AbstractInboundMessageProcessorBuilder.build(AbstractInboundMessageProcessorBuilder.java:56) at org.mule.module.cxf.config.FlowConfiguringMessageProcessor.initialise(FlowConfiguringMessageProcessor.java:94) ... 43 more
  • Similar Issues:
    None

Description

I opened a forum support request but did not receive any response - http://forums.mulesoft.org/thread.jspa?threadID=5363

Details:

I'm using Mule 3.1.2, and when I use jetty-ssl as the inbound scheme for an endpoint using CXF, I get an InitialisationException on startup (I've replaced the path with MyPath).

Flow configuration attached in "Configuration" section for this JIRA. After property substitution, myAddress looks like: jetty-ssl://localhost:8090/MyPath

The reason I'm using a plain inbound-endpoint rather than specifying jetty or jetty-ssl is so I can switch between http and https (and jetty and jetty-ssl) via a property. Unfortunately it doesn't seem to let me use a property for a connector-ref like I was able to do with a CXF protocolConnector in Mule 2.2.1, but that is another issue. Fortunately for now there is only one of each connector type - http, https, jetty, jetty-ssl. Everything works when the inbound is using http, https, or jetty as the scheme, it only fails for jetty-ssl.

I saw a similar exception when trying a cxf:simple-service, but a cxf:proxy-service doesn't result in this error.

Activity

Hide
Evangelina Martinez Ruiz Moreno added a comment -

Hi,

I wasn't able to reproduce the problem you are having with jetty-ssl. This is my configuration:

<flow name="helloService">
<inbound-endpoint address="jetty-ssl:https://localhost:${port1}/hello" />
<cxf:jaxws-service serviceClass="org.mule.module.cxf.example.HelloWorldImpl"/>
<component class="org.mule.module.cxf.example.HelloWorldImpl" />
</flow>

It works fine with the default binding, which is JAXBDataBinding and also with AegisDatabinding. The problem you are having is related to the Aegis Binding of your service class since a PropertyDescriptor is set with null value.
Can you try with a simpler class to confirm that is related to the service class and its binding?
Can you try with the same class but switching the binding to JAXB?

I also search if this is a known issue for CXF and I found this Jira: https://issues.apache.org/jira/browse/CXF-3613. Can it be related? Do you have generics in your class?

I will need more information from you in order to reproduce the problem.
Thanks,
Eva

Show
Evangelina Martinez Ruiz Moreno added a comment - Hi, I wasn't able to reproduce the problem you are having with jetty-ssl. This is my configuration: <flow name="helloService"> <inbound-endpoint address="jetty-ssl:https://localhost:${port1}/hello" /> <cxf:jaxws-service serviceClass="org.mule.module.cxf.example.HelloWorldImpl"/> <component class="org.mule.module.cxf.example.HelloWorldImpl" /> </flow> It works fine with the default binding, which is JAXBDataBinding and also with AegisDatabinding. The problem you are having is related to the Aegis Binding of your service class since a PropertyDescriptor is set with null value. Can you try with a simpler class to confirm that is related to the service class and its binding? Can you try with the same class but switching the binding to JAXB? I also search if this is a known issue for CXF and I found this Jira: https://issues.apache.org/jira/browse/CXF-3613. Can it be related? Do you have generics in your class? I will need more information from you in order to reproduce the problem. Thanks, Eva
Hide
Connor Imes added a comment -

Hi Eva, thanks for getting back to me. The problem appears to occur when you specify "jetty-ssl://" as your protocol. However, it seems to work when you specify that it is https as well like you did in your configuration using "jetty-ssl:https://".

If I recall correctly, simply specifying jetty-ssl as the protocol worked in Mule 2, and it would startup and handle https connections on the provided address. The JettyHttpsConnector registers "jetty-ssl" as a supported protocol, not "jetty-ssl:https". I think a normal http connection is established when using "jetty" as the protocol, without specifying "jetty:http".

Generics do not appear to be a problem (I don't think we're using any). You should be able to reproduce the problem by using "jetty-ssl://" instead of "jetty-ssl:http://".

Show
Connor Imes added a comment - Hi Eva, thanks for getting back to me. The problem appears to occur when you specify "jetty-ssl://" as your protocol. However, it seems to work when you specify that it is https as well like you did in your configuration using "jetty-ssl:https://". If I recall correctly, simply specifying jetty-ssl as the protocol worked in Mule 2, and it would startup and handle https connections on the provided address. The JettyHttpsConnector registers "jetty-ssl" as a supported protocol, not "jetty-ssl:https". I think a normal http connection is established when using "jetty" as the protocol, without specifying "jetty:http". Generics do not appear to be a problem (I don't think we're using any). You should be able to reproduce the problem by using "jetty-ssl://" instead of "jetty-ssl:http://".
Hide
Evangelina Martinez Ruiz Moreno added a comment -

Hi Connor,

Although I'm not able to reproduce the same exception that you were getting, if I only specify jetty-ssl:// without the https:// I'm getting a NPE because CXF cannot resolve the destination for the URI with the jetty-ssl scheme.

In the case of plain jetty, you are right, the URI is mapped to http so CXF does not have an issue resolving the destination.

I will take a look at the scheme mapping. In the meantime, can you confirm me that the issue is solved if you use "jetty-ssl:https://"?

Thanks

Show
Evangelina Martinez Ruiz Moreno added a comment - Hi Connor, Although I'm not able to reproduce the same exception that you were getting, if I only specify jetty-ssl:// without the https:// I'm getting a NPE because CXF cannot resolve the destination for the URI with the jetty-ssl scheme. In the case of plain jetty, you are right, the URI is mapped to http so CXF does not have an issue resolving the destination. I will take a look at the scheme mapping. In the meantime, can you confirm me that the issue is solved if you use "jetty-ssl:https://"? Thanks
Hide
Connor Imes added a comment -

Yes, using "jetty-ssl:https://" works around this problem.

Show
Connor Imes added a comment - Yes, using "jetty-ssl:https://" works around this problem.
Hide
Evangelina Martinez Ruiz Moreno added a comment -

3.1.x - r23194
3.2.x - r23209
3.x - r23210

Show
Evangelina Martinez Ruiz Moreno added a comment - 3.1.x - r23194 3.2.x - r23209 3.x - r23210

People

Vote (2)
Watch (3)

Dates

  • Created:
    Updated:
    Resolved: