Hi again, Freeman!

It's very interesting, when I start test via cmd (mvn clean install) - the exception is the same (
>>>>>[my_cxf_provider_consumer_bridge.xml] is invalid; nested exception
>>>>> is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the
>>>>> declaration of element 'beans'.
>>>>> Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find
>>>>> the declaration of element 'beans'.
>>>>>     at
>>>>> org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
>>>>> Source))

but when I start test via eclipse 3.3 -

>java.lang.NoSuchMethodError:
>org.springframework.core.CollectionFactory.createConcurrentMapIfPossible(I)Ljava/util/Map;

It's puzzle for me... But I will try fo fix it.

May be it is better to explaine how correct to develop service and test it? =)

 Thanks!
 Truly yours, Ivan Pryvalov.

ivan пишет:
   Hi Freeman!

I downloaded 3.2.2-SNAPSHOT sources and try to execute test.

But I faced following:


java.lang.NoSuchMethodError: org.springframework.core.CollectionFactory.createConcurrentMapIfPossible(I)Ljava/util/Map; at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.<init>(DefaultSingletonBeanRegistry.java:82) at org.springframework.beans.factory.support.AbstractBeanFactory.<init>(AbstractBeanFactory.java:142) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.<init>(AbstractAutowireCapableBeanFactory.java:132) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.<init>(AbstractAutowireCapableBeanFactory.java:143) at org.springframework.beans.factory.support.DefaultListableBeanFactory.<init>(DefaultListableBeanFactory.java:99) at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:144) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:99) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:389) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:324) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65) at mycompany.my.CxfBcProviderConsumerTest.createBeanFactory(CxfBcProviderConsumerTest.java:66)



In my pom.xml I included all dependencies from cxf-bc-component (where is placed sample test; when I'll be able to execute test, I'll remove unused dependencies) and parent in servicemix 3.2.2-SNAPSHOT...
   Thanks,
   truly yours,
   Ivan Pryvalov.

Freeman Fang пишет:
Hi Ivan,

You can download 3.2.2 snapshot kit from [1]
You can also grab 3.2.2 snapshot code from [2], and build the kit yourself, both can avoid the version problem

[1]http://people.apache.org/repo/m2-snapshot-repository/org/apache/servicemix/apache-servicemix/3.2.2-SNAPSHOT/ [2]http://svn.apache.org/repos/asf/servicemix/smx3/branches/servicemix-3.2/


Freeman

ivan wrote:
  Hi, Freeman!

I use servicemix 3.2.1 version. So, may be issue is with building (maven dependencies). In your source's example any project have parent. In my root pom I have parent "servicemix" 3.2.1 version. How can I build my project without depending to servicemix parent? Is it possible? Can you write your pom.xml-files of project?


Thanks! Truly yours, Ivan Pryvalov.

Freeman Fang пишет:
Hi Ivan,

I can't reproduce your problem
I generate code from your wsdl, and everything works very well for  me.

What's the servicemix version you are using? Can you try with the servicemix 3.2.2 snapshot?

Freeman

ivan wrote:
Hi Freeman!

Freeman Fang пишет:
Please append your whole wsdl


Ok. Lets simplify our task for the best understanding important things.

I've created simple service MyService and written MyServiceImpl.

Here is my service.wsdl:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
    xmlns:tns="http://mycompany/My";
    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
    xmlns:xmime="http://www.w3.org/2005/05/xmlmime";
    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
    xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/";
    targetNamespace="http://mycompany/My";>
    <wsdl:types>
        <xsd:schema targetNamespace="http://mycompany/My";
attributeFormDefault="qualified" elementFormDefault="qualified">
            <xsd:element name="RequestMessage">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="input"
                            type="xsd:string" />
                        <xsd:element name="input2"
                            type="xsd:string" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="ResponseMessage">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="output"
                            type="xsd:string" />
                        <xsd:element name="output2"
                            type="xsd:string" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:schema>
    </wsdl:types>

    <wsdl:message name="requestMessage">
        <wsdl:part name="request"
            element="tns:RequestMessage">
        </wsdl:part>
    </wsdl:message>
    <wsdl:message name="responseMessage">
        <wsdl:part name="result"
            element="tns:ResponseMessage">
        </wsdl:part>
    </wsdl:message>

    <wsdl:portType name="MyServiceInterface">
        <wsdl:operation name="getInfo">
            <wsdl:input message="tns:requestMessage">
            </wsdl:input>
            <wsdl:output message="tns:responseMessage">
            </wsdl:output>
        </wsdl:operation>
    </wsdl:portType>

    <wsdl:binding name="MyServicePortBinding"
        type="tns:MyServiceInterface">
        <soap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http"; />
        <wsdl:operation name="getInfo">
            <soap:operation soapAction="" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>

    <wsdl:service name="MyService">
        <wsdl:port name="MyServicePort"
            binding="tns:MyServicePortBinding">
<soap:address location="http://localhost:8192/myservice/"; />
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>



   And here is MyServiceImpl:

package mycompany.my;

import javax.jws.WebService;

@WebService(serviceName="MyService",
        targetNamespace="http://myservice/My";,
        portName="MyServicePort",
        endpointInterface="mycompany.my.MyServiceInterface")
public class MyServiceImpl implements MyServiceInterface{

    public ResponseMessage getInfo(RequestMessage request) {
        ResponseMessage responseMessage = new ResponseMessage();
        responseMessage.setOutput(request.getInput().concat("!"));
responseMessage.setOutput2(request.getInput2().concat("!")); return responseMessage;
    }

}



       And this is my CxfBcProviderConsumerTest:

package mycompany.my;

import java.net.URL;

import javax.xml.namespace.QName;

import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.servicemix.tck.SpringTestSupport;
import org.springframework.context.support.AbstractXmlApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;

public class CxfBcProviderConsumerTest extends SpringTestSupport {

    public void testBridge() throws Exception {

        URL wsdl = getClass().getResource("/service.wsdl");
        // start external service
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        factory.setServiceClass(MyServiceInterface.class);
        factory.setServiceBean(new MyServiceImpl());
        factory.setWsdlURL(wsdl.toString());
        factory.setServiceName(new QName("http://mycompany/My";,
                "MyService"));
//factory.setBindingId("http://schemas.xmlsoap.org/wsdl/soap12/";);
        String address = "http://localhost:9001/bridgetest";;
        factory.setAddress(address);
        Server server = factory.create();
        Endpoint endpoint = server.getEndpoint();
        endpoint.getInInterceptors().add(new LoggingInInterceptor());
endpoint.getOutInterceptors().add(new LoggingOutInterceptor());
        ServiceInfo service = endpoint.getEndpointInfo().getService();
        assertNotNull(service);

        // start external client

        assertNotNull(wsdl);
        MyService service1 = new MyService(wsdl,
                new QName("http://mycompany/My";, "MyService"));
        MyServiceInterface port = service1.getMyServicePort();


        RequestMessage requestMessage = new RequestMessage();
        requestMessage.setInput("input1");
        requestMessage.setInput2("input2");
ResponseMessage responseMessage = port.getInfo(requestMessage);

               System.err.println(responseMessage.getOutput());
        System.err.println(responseMessage.getOutput2());
              assertNotNull(responseMessage);

    }

    @Override
    protected AbstractXmlApplicationContext createBeanFactory() {
        return new ClassPathXmlApplicationContext(
                "my_cxf_provider_consumer_bridge.xml");
    }

}


-----------------my_cxf_provider_consumer_bridge.xml----------------

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:sm="http://servicemix.apache.org/config/1.0";
       xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0";
       xmlns:my="http://mycompany/My";>

  <sm:container id="jbi" embedded="true">
    <sm:endpoints>
      <cxfbc:consumer wsdl="/service.wsdl"
                      service="my:MyService"
                      endpoint="MyPort"
                      targetEndpoint="MyPortProxy"
                      targetService="my:MyService"
                      targetInterface="my:MyServiceInterface">
          <cxfbc:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
          </cxfbc:inInterceptors>
          <cxfbc:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
          </cxfbc:outInterceptors>
          <cxfbc:inFaultInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
          </cxfbc:inFaultInterceptors>
          <cxfbc:outFaultInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
          </cxfbc:outFaultInterceptors>
      </cxfbc:consumer>

      <cxfbc:provider wsdl="/service.wsdl"
                      locationURI="http://localhost:9001/bridgetest";
                      service="my:MyService"
                      endpoint="MyPortProxy"
                      interfaceName="my:MyServiceInterface"
                     >
          <cxfbc:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
          </cxfbc:inInterceptors>
          <cxfbc:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
          </cxfbc:outInterceptors>
          <cxfbc:inFaultInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
          </cxfbc:inFaultInterceptors>
          <cxfbc:outFaultInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
          </cxfbc:outFaultInterceptors>
      </cxfbc:provider>
    </sm:endpoints>

  </sm:container>

</beans>



When I start test I faced new issue (Exception):

testBridge(mycompany.my.CxfBcProviderConsumerTest) Time elapsed: 0.515 sec <<< ERROR! org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 4 in XML document from class path resource [my_cxf_provider_consumer_bridge.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'. Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'. at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:351) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:280) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:131) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:147) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:173) at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:112) at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:79) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:100) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65) at mycompany.my.CxfBcProviderConsumerTest.createBeanFactory(CxfBcProviderConsumerTest.java:81) at org.apache.servicemix.tck.SpringTestSupport.setUp(SpringTestSupport.java:65)
...


-----xbean.xml----
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0";>
    <cxfse:endpoint>
        <cxfse:pojo>
          <bean class="mycompany.my.MyServiceImpl" />
        </cxfse:pojo>
    </cxfse:endpoint>
</beans>




I used ServiceMix's CxfBcProviderConsumerTest as example.


Thanks in advance!
Truly yours, Ivan Pryvalov.










Reply via email to