论坛首页 Java企业应用论坛

WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单

浏览 51150 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-03-12  
SOA
WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单

    现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了这样的业务要求,需要在.net开发的客户端系统中访问java开发的web系统,这样的业务需求自然需要通过WebService进行信息数据的操作。下面就将我们在开发中摸索的一点经验教训总结以下,以供大家参考.

WebService开发笔记 2 -- VS 2005 访问WebServcie更简单中作一个跨平台访问WebServcie服务的例子....

WebService开发笔记 3 -- 增强访问 WebService 的安全性通过一个简单的用户口令验证机制来加强一下WebService的安全性....

我们项目的整个架构使用的比较流行的WSH MVC组合,即webwork2 + Spring + Hibernate;
1.首先集成Apacha CXF WebService 到 Spring 框架中;
   apache cxf 下载地址:http://people.apache.org/dist/incubator/cxf/2.0.4-incubator/apache-cxf-2.0.4-incubator.zip
  在spring context配置文件中引入以下cxf配置
	<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" />

   在web.xml中添加过滤器:
	<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>/services/*</url-pattern>
	</servlet-mapping>


2.开发服务端WebService接口:
/**
 * WebService接口定义类.
 * 
 * 使用@WebService将接口中的所有方法输出为Web Service.
 * 可用annotation对设置方法、参数和返回值在WSDL中的定义.
 */
@WebService
public interface WebServiceSample {


	/**
	 * 一个简单的方法,返回一个字符串
	 * @param hello
	 * @return
	 */
	String say(String hello);
	
	/**
	 * 稍微复杂一些的方法,传递一个对象给服务端处理
	 * @param user
	 * @return
	 */
	String sayUserName(
			@WebParam(name = "user") 
			UserDTO user);
	
	/**
	 * 最复杂的方法,返回一个List封装的对象集合
	 * @return
	 */
	public 
	@WebResult(partName="o")
	ListObject findUsers();

}

由简单到复杂定义了三个接口,模拟业务需求;

3.实现接口
/**
 * WebService实现类.
 * 
 * 使用@WebService指向Interface定义类即可.
 */
@WebService(endpointInterface = "cn.org.coral.biz.examples.webservice.WebServiceSample")
public class WebServiceSampleImpl implements WebServiceSample {

	public String sayUserName(UserDTO user) {
		return "hello "+user.getName();
	}

	public String say(String hello) {
		return "hello "+hello;
	}

	public ListObject findUsers() {
		ArrayList<Object> list = new ArrayList<Object>();
		
		list.add(instancUser(1,"lib"));
		list.add(instancUser(2,"mld"));
		list.add(instancUser(3,"lq"));
		list.add(instancUser(4,"gj"));
		ListObject o = new ListObject();
		o.setList(list);
		return o;
	}
	
	private UserDTO instancUser(Integer id,String name){
		UserDTO user = new UserDTO();
		user.setId(id);
		user.setName(name);
		return user;
	}
}


4.依赖的两个类:用户对象与List对象
/**
 * Web Service传输User信息的DTO.
 * 
 * 分离entity类与web service接口间的耦合,隔绝entity类的修改对接口的影响.
 * 使用JAXB 2.0的annotation标注JAVA-XML映射,尽量使用默认约定.
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "User")
public class UserDTO {

	protected Integer id;

	protected String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer value) {
		id = value;
	}

	public String getName() {
		return name;
	}

	public void setName(String value) {
		name = value;
	}
}

关于List对象,参照了有关JWS的一个问题中的描述:DK6.0 自带的WebService中 WebMethod的参数好像不能是ArrayList 或者其他List
传递List需要将List 包装在其他对象内部才行 (个人理解 如有不对请指出) ,我在实践中也遇到了此类问题.通过以下封装的对象即可以传递List对象.
/**
 * <p>Java class for listObject complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * <complexType name="listObject">
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <sequence>
 *         <element name="list" type="{http://www.w3.org/2001/XMLSchema}anyType" maxOccurs="unbounded" minOccurs="0"/>
 *       </sequence>
 *     </restriction>
 *   </complexContent>
 * </complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "listObject", propOrder = { "list" })
public class ListObject {

	@XmlElement(nillable = true)
	protected List<Object> list;

	/**
	 * Gets the value of the list property.
	 * 
	 * <p>
	 * This accessor method returns a reference to the live list,
	 * not a snapshot. Therefore any modification you make to the
	 * returned list will be present inside the JAXB object.
	 * This is why there is not a <CODE>set</CODE> method for the list property.
	 * 
	 * <p>
	 * For example, to add a new item, do as follows:
	 * <pre>
	 *    getList().add(newItem);
	 * </pre>
	 * 
	 * 
	 * <p>
	 * Objects of the following type(s) are allowed in the list
	 * {@link Object }
	 * 
	 * 
	 */
	public List<Object> getList() {
		if (list == null) {
			list = new ArrayList<Object>();
		}
		return this.list;
	}

	public void setList(ArrayList<Object> list) {
		this.list = list;
	}

}


5.WebService 服务端 spring 配置文件 ws-context.xml
<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://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd"
	default-autowire="byName" default-lazy-init="true">
	
	<jaxws:endpoint id="webServiceSample"
		address="/WebServiceSample" implementor="cn.org.coral.biz.examples.webservice.WebServiceSampleImpl"/>

</beans>


WebService 客户端 spring 配置文件 wsclient-context.xml
<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://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd"
	default-autowire="byName" default-lazy-init="true">

	<!-- ws client -->
	<bean id="identityValidateServiceClient" class="cn.org.coral.admin.service.IdentityValidateService"
		factory-bean="identityValidateServiceClientFactory" factory-method="create" />

	<bean id="identityValidateServiceClientFactory"
		class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
		<property name="serviceClass"
			value="cn.org.coral.admin.service.IdentityValidateService" />
		<property name="address"
			value="http://88.148.29.54:8080/coral/services/IdentityValidateService"/>
	</bean>
	
</beans>

6.发布到tomcat服务器以后通过以下地址即可查看自定义的webservice接口生成的wsdl:
http://88.148.29.54:8080/aio/services/WebServiceSample?wsdl

7.调用WebService接口的Junit单元测试程序
package test.coral.sample;

import org.springframework.test.AbstractDependencyInjectionSpringContextTests;

import cn.org.coral.biz.examples.webservice.WebServiceSample;
import cn.org.coral.biz.examples.webservice.dto.UserDTO;

public class TestWebServiceSample extends
		AbstractDependencyInjectionSpringContextTests {
	WebServiceSample webServiceSampleClient;

	public void setWebServiceSampleClient(WebServiceSample webServiceSampleClient) {
		this.webServiceSampleClient = webServiceSampleClient;
	}
	
	@Override
	protected String[] getConfigLocations() {
		setAutowireMode(AUTOWIRE_BY_NAME);
                  //spring 客户端配置文件保存位置
		return new String[] { "classpath:/cn/org/coral/biz/examples/webservice/wsclient-context.xml" };
	}
	
	public void testWSClinet(){
		Assert.hasText(webServiceSampleClient.say(" world"));
	}
}

  • 大小: 152.6 KB
   发表时间:2008-03-19  
谢谢博主的分享,我对这块很是模糊,还请博主多多指教.
0 请登录后投票
   发表时间:2008-03-19  
参照实例多多实践是理解新技术的一个好途径!
0 请登录后投票
   发表时间:2008-03-20  
WSDL 我成功发布了.
但是客户端调用的时候,出现了下面的异常,能否帮忙看看.

调用代码:
public  String testServiceMethod() throws Exception {
	        // START SNIPPET: client
		 	System.out.println("test");
	        ClassPathXmlApplicationContext context 
	            = new ClassPathXmlApplicationContext(new String[] {"com/ems/test/client-beans.xml"});
	        
	        //org.apache.cxf.jaxws.JaxWsProxyFactoryBean clientFac = (org.apache.cxf.jaxws.JaxWsProxyFactoryBean)context.getBean("clientFactory");
	        
	        //com.gdcn.bpaf.service.IDictionaryTypeService client = (IDictionaryTypeService)clientFac.create();
	        com.gdcn.bpaf.service.IDictionaryTypeService client = (IDictionaryTypeService)context.getBean("client");

	        com.gdcn.bpaf.model.BPAFDictionaryType response = client.getDictionaryTypeByCode("test");
	        System.out.println("Response: " + response.getDictionary_name());
	        return response.getDictionary_name();
	        // END SNIPPET: client
	    }


client-beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
	Licensed to the Apache Software Foundation (ASF) under one
	or more contributor license agreements. See the NOTICE file
	distributed with this work for additional information
	regarding copyright ownership. The ASF licenses this file
	to you under the Apache License, Version 2.0 (the
	"License"); you may not use this file except in compliance
	with the License. You may obtain a copy of the License at
	
	http://www.apache.org/licenses/LICENSE-2.0
	
	Unless required by applicable law or agreed to in writing,
	software distributed under the License is distributed on an
	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
	KIND, either express or implied. See the License for the
	specific language governing permissions and limitations
	under the License.
-->
<!-- START SNIPPET: beans -->
<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-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
	
	<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
	  <property name="serviceClass" value="com.gdcn.bpaf.service.IDictionaryTypeService"/>
	  <property name="address" value="http://localhost:8080/EMSTest/DictionaryType"/>
	</bean>
	
    <bean id="client" class="com.gdcn.bpaf.service.IDictionaryTypeService" 
      factory-bean="clientFactory" factory-method="create"/>
    
	
	  
</beans>
<!-- END SNIPPET: beans -->



调用的时候异常为:
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'client' defined in class path resource [com/ems/test/client-beans.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public java.lang.Object org.apache.cxf.frontend.ClientProxyFactoryBean.create()] threw exception; nested exception is java.lang.NullPointerException
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:423)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:871)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:785)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:437)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:404)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:375)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:263)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:170)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:260)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:184)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:163)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:430)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
	at com.ems.test.testUI.testServiceMethod(testUI.java:62)
	at com.ems.test.testUI.createContents(testUI.java:53)
	at com.ems.test.testUI.open(testUI.java:34)
	at com.ems.test.testUI.main(testUI.java:22)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public java.lang.Object org.apache.cxf.frontend.ClientProxyFactoryBean.create()] threw exception; nested exception is java.lang.NullPointerException
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:127)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:414)
	... 20 more
Caused by: java.lang.NullPointerException
	at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.setConfigLocations(AbstractRefreshableConfigApplicationContext.java:78)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:137)
	at org.apache.cxf.bus.spring.BusApplicationContext.<init>(BusApplicationContext.java:68)
	at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:84)
	at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:65)
	at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:54)
	at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:69)
	at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:106)
	at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:97)
	at org.apache.cxf.endpoint.AbstractEndpointFactory.getBus(AbstractEndpointFactory.java:73)
	at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.initializeServiceFactory(AbstractWSDLBasedEndpointFactory.java:143)
	at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:73)
	at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:51)
	at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:92)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:115)
	... 21 more
0 请登录后投票
   发表时间:2008-03-20  
spring创建bean失败,不知这个 client bean 中有没有引用其它的bean?如果有需要在加载context时引入相应的配置文件.
 <bean id="client" class="com.gdcn.bpaf.service.IDictionaryTypeService"    
      factory-bean="clientFactory" factory-method="create"/> 
0 请登录后投票
   发表时间:2008-03-20  
java_code 写道
WSDL 我成功发布了.
但是客户端调用的时候,出现了下面的异常,能否帮忙看看.

调用代码:
public  String testServiceMethod() throws Exception {
	        // START SNIPPET: client
		 	System.out.println("test");
	        ClassPathXmlApplicationContext context 
	            = new ClassPathXmlApplicationContext(new String[] {"com/ems/test/client-beans.xml"});
	        
	        //org.apache.cxf.jaxws.JaxWsProxyFactoryBean clientFac = (org.apache.cxf.jaxws.JaxWsProxyFactoryBean)context.getBean("clientFactory");
	        
	        //com.gdcn.bpaf.service.IDictionaryTypeService client = (IDictionaryTypeService)clientFac.create();
	        com.gdcn.bpaf.service.IDictionaryTypeService client = (IDictionaryTypeService)context.getBean("client");

	        com.gdcn.bpaf.model.BPAFDictionaryType response = client.getDictionaryTypeByCode("test");
	        System.out.println("Response: " + response.getDictionary_name());
	        return response.getDictionary_name();
	        // END SNIPPET: client
	    }


client-beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
	Licensed to the Apache Software Foundation (ASF) under one
	or more contributor license agreements. See the NOTICE file
	distributed with this work for additional information
	regarding copyright ownership. The ASF licenses this file
	to you under the Apache License, Version 2.0 (the
	"License"); you may not use this file except in compliance
	with the License. You may obtain a copy of the License at
	
	http://www.apache.org/licenses/LICENSE-2.0
	
	Unless required by applicable law or agreed to in writing,
	software distributed under the License is distributed on an
	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
	KIND, either express or implied. See the License for the
	specific language governing permissions and limitations
	under the License.
-->
<!-- START SNIPPET: beans -->
<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-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
	
	<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
	  <property name="serviceClass" value="com.gdcn.bpaf.service.IDictionaryTypeService"/>
	  <property name="address" value="http://localhost:8080/EMSTest/DictionaryType"/>
	</bean>
	
    <bean id="client" class="com.gdcn.bpaf.service.IDictionaryTypeService" 
      factory-bean="clientFactory" factory-method="create"/>
    
	
	  
</beans>
<!-- END SNIPPET: beans -->



调用的时候异常为:
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'client' defined in class path resource [com/ems/test/client-beans.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public java.lang.Object org.apache.cxf.frontend.ClientProxyFactoryBean.create()] threw exception; nested exception is java.lang.NullPointerException
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:423)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:871)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:785)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:437)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:404)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:375)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:263)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:170)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:260)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:184)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:163)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:430)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
	at com.ems.test.testUI.testServiceMethod(testUI.java:62)
	at com.ems.test.testUI.createContents(testUI.java:53)
	at com.ems.test.testUI.open(testUI.java:34)
	at com.ems.test.testUI.main(testUI.java:22)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public java.lang.Object org.apache.cxf.frontend.ClientProxyFactoryBean.create()] threw exception; nested exception is java.lang.NullPointerException
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:127)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:414)
	... 20 more
Caused by: java.lang.NullPointerException
	at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.setConfigLocations(AbstractRefreshableConfigApplicationContext.java:78)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:137)
	at org.apache.cxf.bus.spring.BusApplicationContext.<init>(BusApplicationContext.java:68)
	at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:84)
	at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:65)
	at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:54)
	at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:69)
	at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:106)
	at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:97)
	at org.apache.cxf.endpoint.AbstractEndpointFactory.getBus(AbstractEndpointFactory.java:73)
	at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.initializeServiceFactory(AbstractWSDLBasedEndpointFactory.java:143)
	at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:73)
	at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:51)
	at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:92)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:115)
	... 21 more

用的是spring-2.5.x吧,先用spring-2.0.x顶着,等cxf修复bug
0 请登录后投票
   发表时间:2008-03-20  
如果一定要用Spring 2.5.2 你也可以下载CXF2.0.5 snapshot[1] 试验一下。 我记得这个bug应该是修正了的。
[1] http://people.apache.org/repo/m2-snapshot-repository/org/apache/cxf/apache-cxf/2.0.5-incubator-SNAPSHOT/apache-cxf-2.0.5-incubator-20080319.024727-10.zip
0 请登录后投票
   发表时间:2008-03-20  
jnn 写道
如果一定要用Spring 2.5.2 你也可以下载CXF2.0.5 snapshot[1] 试验一下。 我记得这个bug应该是修正了的。
[1] http://people.apache.org/repo/m2-snapshot-repository/org/apache/cxf/apache-cxf/2.0.5-incubator-SNAPSHOT/apache-cxf-2.0.5-incubator-20080319.024727-10.zip

用2.0.5是通过的,但是jira上面写的是2.0.4就fixed
0 请登录后投票
   发表时间:2008-03-20  
quaff 写道
jnn 写道
如果一定要用Spring 2.5.2 你也可以下载CXF2.0.5 snapshot[1] 试验一下。 我记得这个bug应该是修正了的。
[1] http://people.apache.org/repo/m2-snapshot-repository/org/apache/cxf/apache-cxf/2.0.5-incubator-SNAPSHOT/apache-cxf-2.0.5-incubator-20080319.024727-10.zip

用2.0.5是通过的,但是jira上面写的是2.0.4就fixed

Spring 2.5.2 是在2008年2月底发布的,而CXF 2.0.4 是在2008年1月底发布的。 JIRA上说2.0.4 fixed 的bug 应该是与Spring 2.5相关的bug。
0 请登录后投票
   发表时间:2008-03-23  
信息: Interceptor has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Marshalling Error: class com.color.webterminal.ws.dto.UserDTO nor any of its super class is known to this context.
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:207)
	at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:63)


报上面错误啊,按照楼主的做的代码,Help me
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics