cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alton Idowu (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CXF-1598) Soap message generated via JaxWsProxyFactoryBean created client fails
Date Thu, 29 May 2008 22:55:45 GMT

    [ https://issues.apache.org/jira/browse/CXF-1598?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12600954#action_12600954
] 

Alton Idowu commented on CXF-1598:
----------------------------------

DAO
-----------------------
public class TestDAO {
    private static final Log logger = LogFactory.getLog(TestDAO .class);

    private TestServiceClient testServiceClient;
    
     public void setTestServiceClientProxy(TestServiceClient testServiceClientProxy) {
		this.testServiceClient = testServiceClientProxy;
    }

    public String executeQuery(String query) {
        try {
        	return testServiceClient.executeQuery(query);
        } catch(Throwable t) {
        	logger.error("Error with Test web service excuting query: " 
        			+ query, t);
            throw new RuntimeException(t);
        }
    }
}

CLIENT
---------------------------------------------
import javax.jws.WebService;

import org.apache.cxf.interceptor.InInterceptors;
import org.apache.cxf.interceptor.OutInterceptors;

@WebService(targetNamespace = "urn:test.ilss.sup", 
	    serviceName = "service",
	    portName = "serviceHttpPort")
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
@OutInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingOutInterceptor")
public interface TestServiceClient {
	public String executeQuery(String query) throws Throwable;
}

FACTORY
------------------------------------
import java.net.MalformedURLException;
import java.net.URL;

import test.cfg.ConfigurationManager;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class TestClientFactoryBean extends JaxWsProxyFactoryBean {
	private static final Log logger = LogFactory.getLog(TestClientFactoryBean .class);

	private static final String URL_TEMPLATE = "/vip/queryservice.ws?wsdl";
	private static String SERVICE_URL;

	static {
		SERVICE_URL = 
			ConfigurationManager.ApplicationProperties.getTestUrl() + URL_TEMPLATE;

		try {
			// Just to double check it formed properly
			new URL(SERVICE_URL);
		} catch (MalformedURLException e) {
			logger.error("Invalid URL for Test web service : " + SERVICE_URL, e);
		}
	}

	@Override
	public void setWsdlURL(String url) {
		super.setWsdlURL(SERVICE_URL);
	}
}

CXF.XML
-----------------------------------------
<?xml version="1.0" encoding="UTF-8"?>

    <!-- 
    	TODO: build extension to JaxRpcPortProxyFactoryBean which
    	looks up the service from a db.
     -->

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:cxf="http://cxf.apache.org/core"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
       xsi:schemaLocation="http://cxf.apache.org/core 
                           http://cxf.apache.org/schemas/core.xsd
                           http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                           http://cxf.apache.org/jaxws 
                           http://cxf.apache.org/schemas/jaxws.xsd
                           http://cxf.apache.org/transports/http/configuration
                           http://cxf.apache.org/schemas/configuration/http-conf.xsd">
                           
    <import resource="classpath:META-INF/cxf/cxf-all.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    
    <bean id="cxf" class="org.apache.cxf.bus.extension.ExtensionManagerBus"/>
	
    <cxf:bus>
      <cxf:features>
         <cxf:logging/>
      </cxf:features>
    </cxf:bus>

    <bean id="testServiceFactory" class="test.service.TestClientFactoryBean"
          lazy-init="true">
      <property name="serviceClass" value="test.service.TestServiceClient"/>
      <property name="wsdlURL" value="http://127.0.0.1"/>
      <property name="bus" ref="cxf"/>
    </bean>
    
    <bean id="testServiceClient" class="test.service.TestServiceClient"
          factory-bean="testServiceFactory" factory-method="create" lazy-init="true"/>
          
    <bean id="testServiceClientProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
	    <property name="targetSource">
	    	<bean class="org.springframework.aop.target.LazyInitTargetSource">
	    		<property name="targetBeanName">
	    			<idref local="testServiceClient"/>
	    		</property>
	    	</bean>
	   </property>
	   <property name="proxyInterfaces" value="test.service.TestServiceClient"/>
	</bean>

</beans>

> Soap message generated via JaxWsProxyFactoryBean created client fails
> ---------------------------------------------------------------------
>
>                 Key: CXF-1598
>                 URL: https://issues.apache.org/jira/browse/CXF-1598
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.1
>         Environment: Windows XP, Ubuntu 7.04, jdk 1.5.0_09, CXF 2.1
>            Reporter: Alton Idowu
>            Assignee: Daniel Kulp
>
> The soap messages generated through DynamicClientFactory and JaxWsProxyFactoryBean are
different.  The message generated via the DynamicClientFactory created client generates a
soap message with qualified parameters that is accepted by web service provider.  However,
the message JaxWsProxyFactoryBean created client generates a soap message with unqualified
parameters that is rejected by the web service provider.   Is there a parameter or custom
interceptor code that I can use to force the JaxWsProxyFactoryBean created client to qualify
the parameters?  Unfortunately, changing the web service provider is not an option as their
change management process is very arduous.
> Soap message generated via the DynamicClientFactory client:
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> 	<soap:Body>
> 		<ns1:executeQuery xmlns:ns1="urn:test.ilss.sup">
> 			<in0 xmlns="urn:test.ilss.sup">
> 				TEST DATA
> 			</in0>
> 		</ns1:executeQuery>
> 	</soap:Body>
> </soap:Envelope>
> Soap message generated via the JaxWsProxyFactoryBean client:
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> 	<soap:Body>
> 		<ns2:executeQuery xmlns:ns2="urn:test.ilss.sup">
> 			<in0>
> 				TEST DATA
> 			</in0>
> 		</ns2:executeQuery>
> 	</soap:Body>
> </soap:Envelope>
> The web service provider sends the following message for the JaxWsProxyFactoryBean client:
> <?xml version='1.0' encoding='UTF-8'?>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> 	<soap:Body>
> 		<soap:Fault>
> 			<faultcode>Server</faultcode>
> 			<faultstring>Parameter in0 does not exist!</faultstring>
> 		</soap:Fault>
> 	</soap:Body>
> </soap:Envelope>
> WSDL:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:test.ilss.sup" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:test.ilss.sup">
>   <wsdl:types>
>     <xsd:schema targetNamespace="urn:test.ilss.sup" elementFormDefault="qualified"
attributeFormDefault="qualified">
>       <xsd:element name="executeQuery">
>         <xsd:complexType>
>           <xsd:sequence>
>             <xsd:element name="in0" type="xsd:string" minOccurs="1" maxOccurs="1"
/>
>           </xsd:sequence>
>         </xsd:complexType>
>       </xsd:element>
>       <xsd:element name="executeQueryResponse">
>         <xsd:complexType>
>           <xsd:sequence>
>             <xsd:element name="out" type="xsd:string" minOccurs="1" maxOccurs="1"
/>
>           </xsd:sequence>
>         </xsd:complexType>
>       </xsd:element>
>     </xsd:schema>
>   </wsdl:types>
>   <wsdl:message name="executeQueryResponse">
>     <wsdl:part element="tns:executeQueryResponse" name="parameters" />
>   </wsdl:message>
>   <wsdl:message name="executeQueryRequest">
>     <wsdl:part element="tns:executeQuery" name="parameters" />
>   </wsdl:message>
>   <wsdl:portType name="servicePortType">
>     <wsdl:operation name="executeQuery">
>       <wsdl:input message="tns:executeQueryRequest" name="executeQueryRequest" />
>       <wsdl:output message="tns:executeQueryResponse" name="executeQueryResponse"
/>
>     </wsdl:operation>
>   </wsdl:portType>
>   <wsdl:binding name="serviceHttpBinding" type="tns:servicePortType">
>     <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"
/>
>     <wsdl:operation name="executeQuery">
>       <wsdlsoap:operation soapAction="" />
>       <wsdl:input name="executeQueryRequest">
>         <wsdlsoap:body use="literal" />
>       </wsdl:input>
>       <wsdl:output name="executeQueryResponse">
>         <wsdlsoap:body use="literal" />
>       </wsdl:output>
>     </wsdl:operation>
>   </wsdl:binding>
>   <wsdl:service name="service">
>     <wsdl:port binding="tns:serviceHttpBinding" name="serviceHttpPort">
>       <wsdlsoap:address location="http://****/vip/queryservice.ws" />
>     </wsdl:port>
>   </wsdl:service>
> </wsdl:definitions>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message