The wsdl/namespace issue is per spec.
Check your @WebService annotation on the SEI interface and on the
Service impl. Specify the same targetNamespace on both annotations
and it should work OK. If either is missing, the code maps the
package name to the namespace for the wsdl.
Getting the namespaces fixed up MIGHT fix the other issues, not really
sure. If not, a sample testcase would be great.
Dan
On May 13, 2008, at 1:05 AM, Kashif Ahmed Qazi wrote:
I have developed webservice using Xfire . now I'm migrating my
services to CXF. I'm facing
some issues please any one can help me to resolvc these issues.
I have written Authentication code and tested it with other cxf
service is working fine.
when i tried to migrate service from Xfire to CXF then I'm facing
some configuration issues. the service is generating the wsdl given
below but having tow different namespace in it.
wsdl:definitions targetNamespace="http://com.etilize.spexlive/
account">
<wsdl:definitions name="AccountConsoleService" targetNamespace="http://account.service.spexlive.etilize.com/
">
<wsdl:import location=MailScanner has detected a possible fraud
attempt from "localhost:8080" claiming to be "http://localhost:8080/spexLiveWebService/soap/AccountConsoleService?wsdl=AccountManagementIntf.wsdl
" namespace="http://com.etilize.spexlive/account">
The tomcat console has the following errors.
SEVERE: Schema element {http://com.etilize.spexlive/
account}updateCompanyApplicationNameResponse references undefined
type {http://com.etilize.spexlive/
account}updateCompanyApplicationNameResponse for service {http://account.service.spexlive.etilize.com/
}AccountConsoleService.
May 12, 2008 5:06:31 PM
org.apache.cxf.service.factory.ReflectionServiceFactoryBean
fillInSchemaCrossreferences
Please find the attached service.xml cxf.xml and web.xml and
generated wsdl file.
Can u help me to resolve this issue.
also help me to write a java client to use the service I'm using
Jaxb2 data binding.
Regards,
Kashif Ahmed Qazi
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<bean id="dataBinding" class="org.apache.cxf.jaxb.JAXBDataBinding"/>
<bean id="serviceFactory"
class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
<property name="dataBinding" ref="dataBinding" />
<property name="serviceConfigurations">
<list>
<bean
class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration" />
<bean
class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration" />
<bean
class="org.apache.cxf.service.factory.DefaultServiceConfiguration" />
</list>
</property>
</bean>
<jaxws:endpoint id="AMService"
implementor
="com.etilize.spexlive.service.account.AccountManagementImpl"
address="/AccountConsoleService">
<jaxws:schemaLocations>
<jaxws:schemaLocation>
classpath:META-INF/schema/account.xsd
</jaxws:schemaLocation>
</jaxws:schemaLocations>
<!--
<jaxws:dataBinding>
<bean class="org.apache.cxf.jaxb.JAXBDataBinding">
<property name="contextProperties">
<map>
<entry>
<key><value>com.sun.xml.bind.defaultNamespaceRemap</value></
key>
<value>uri:ultima:thule</value>
</entry>
</map>
</property>
</bean>
</jaxws:dataBinding>
-->
<jaxws:serviceFactory>
<ref bean="serviceFactory" />
</jaxws:serviceFactory>
<!--
<jaxws:inInterceptors>
<bean
class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
<bean
class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<entry key="action" value="UsernameToken" />
<entry key="passwordType" value="PasswordDigest" />
<entry key="passwordCallbackClass"
value
="com.etilize.spexlive.service.security.ServerPasswordCallback" />
</map>
</constructor-arg>
</bean>
</jaxws:inInterceptors>
-->
</jaxws:endpoint>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
">
<display-name>SpexLiveConsoleService</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:com/etilize/spexlive/service/cxf.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/soap/*</url-pattern>
</servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<!--
<xfire>
<inHandlers>
<handler
handlerClass
="com.etilize.spexlive.service.handler.AuthenticationHandler">
</handler>
</inHandlers>
</xfire> -->
<bean id="AccountManagementService"
class="com.etilize.spexlive.service.account.AccountManagementImpl" />
<bean id="CatalogManagementService"
class="com.etilize.spexlive.service.catalog.CatalogManagementImpl" />
<service>
<serviceBean>#AccountManagementService</serviceBean>
<serviceFactory>#jaxbServiceFactory</serviceFactory>
<schemas>
<schema>META-INF/schema/account.xsd</schema>
</schemas>
<style>document</style>
</service>
<service>
<serviceBean>#CatalogManagementService</serviceBean>
<serviceFactory>#jaxbServiceFactory</serviceFactory>
<schemas>
<schema>META-INF/schema/catalog.xsd</schema>
</schemas>
<style>document</style>
</service>
<bean name="jaxbServiceFactory"
class="org.codehaus.xfire.jaxb2.JaxbServiceFactory">
<constructor-arg ref="xfire.transportManager" />
</bean>
</beans>
package com.etilize.spexlive.service.client;
import java.util.HashMap;
import java.util.Map;
import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxb.JAXBDataBinding;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.handler.WSHandlerConstants;
import com.etilize.spexlive.service.account.AccountManagement;
import
com.etilize.spexlive.service.account.data.ActivateAdministrator;
import com.etilize.spexlive.service.account.data.GetUserList;
import com.etilize.spexlive.service.account.data.UserList;
public final class Client {
private Client() {
}
public static void main(String args[]) throws Exception {
/*
* //JaxbServiceFactory serviceFactory=new JaxbServiceFactory()
Service serviceModel = new ObjectServiceFactory(new
AegisBindingProvider(new
JaxbTypeRegistry
())).create(AccountManagement.class,null,version_ns,props);
*/
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setDataBinding(new JAXBDataBinding());
factory.setServiceClass(AccountManagement.class);
System
.out.println("*************************************************");
factory.setAddress("http://localhost:8080/spexLiveWebService/soap/AccountConsoleService
");
AccountManagement service = (AccountManagement)
factory.create();
System.out.println("Starting Client...");
GetUserList requestList = new GetUserList();
requestList.setUserId(111);
requestList.setCompanyId(343);
ActivateAdministrator ad= new ActivateAdministrator();
ad.setAdministratorId(1);
ad.setUserId(1);
System.out.println("Activate:"+service.activateAdministrator(ad));
UserList list=service.getUserList(requestList);
System.out.println("User List"+list.getCount());
System.out.println("Exiting Client.");
//System.exit(0);
}
}
---
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog