CXF2.6.16 HelloWorld

本文解决使用CXF版本2.6.16和JDK版本1.6.0_03开发过程中遇到的运行时异常问题,包括jar包兼容性问题及与JDK版本不兼容导致的RuntimeException。通过调整开发环境和配置,成功解决了异常并实现了服务端和客户端的正常通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 环境:Jdk版本1.6.0_03

          CXF版本2.6.16

说明:有很多错误是由于少了某些jar引起的,但是eclipse控制台可能不会报java.lang.NoClassDefFoundError错误,所以解决这样的问题比较麻烦。

problem:java.lang.RuntimeException: Cannot create a secure XMLInputFactory 运行时异常,并不是一定是缺少两个jar包  stax2-api-3.1.x.jar 和 woodstox-core-asl-4.2.x.jar而引起的异常,缺少其他jar包也可能出现这个异常。

 

 开发项目的目录结构以及jar,如图


开发步骤:

1.接口login.java

package cxf.service;   
  
import javax.jws.WebParam;   
import javax.jws.WebService;   
  
@WebService  
public interface Login {   
    public String login(@WebParam(name="name")String name,@WebParam(name="password")String password);   
}  

 2.实现login接口

package cxf.service;   
  
import javax.jws.WebService;   
  
  
@WebService(endpointInterface="cxf.service.Login",serviceName="Login")   
public class LoginImpl implements Login {   
  
    public String login(String name, String password) {   
        String result = "登录CXF 服务端成功!";   
        if (!"cxf".equalsIgnoreCase(name) || !"cxf".equalsIgnoreCase(password)) {   
            result = "用户名或密码不正确,请重新登录!";   
        }   
        return result;   
    }   
  
}  

 3.编写服务端(启动服务)

package cxf.service;   
  
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;   
  
public class Pub {   
    public static void main(String[] args) {   
        LoginImpl loginImpl = new LoginImpl();   
        JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();   
        bean.setServiceClass(Login.class);   
        bean.setServiceBean(loginImpl);   
        bean.setAddress("http://localhost:9000/helloWorld");   
        bean.create();   
        System.out.println("Finish....");   
    }   
}  

 4.编写客户端(测试类)

package cxf.client;   
/**
 * CXF2.6.16依赖的jar包
 */
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;   

import cxf.service.Login;
  
public class Client {   
    public static void main(String[] args) {   
        JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();   
        bean.setServiceClass(Login.class);   
        bean.setAddress("http://localhost:9000/helloWorld");   
        Login login = (Login) bean.create();   
        System.out.println("result--->"+login.login("cxf", "cxf"));   
    }   
}  

5.经过如上的4个步骤之后还是不行,因为CXF与jdk中的类不兼容,解决办法如下: 

CXF中jaxb-api.jar、jaxws-api.jar与jdk1.6.0_02不兼容问题

http://villain564.iteye.com/blog/963967

 

 

参考:http://villain564.iteye.com/blog/963967

参考:http://www.cnblogs.com/frankliiu-java/articles/1641949.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值