WebService认识一

前言:感觉好悲剧,先是下了个Apatche CXF3.0.0,然后根据官方的文档写了代码,但是发现编译都通不过,想想肯定是Jar包的问题,但是官方用的Maven的方式配置的Jar,个人对Maven不熟,而且网上根本就没这个版本的资料,无奈:换了个2.7.7版本,然后发现自己还是挺悲剧的,直接讲这个版本的资料也很少,有的还很坑。


操作:
一:下载Apatche CXF2.7.7,然后解压。

二:在Eclipse中建立工程,导入如下Jar(最简)
        

三:建立WebService接口及其实现:(注:User对象及UserDaoImp的实现不是本文的重点:可以参考博客:http://blog.csdn.net/wjl_mgqs/article/details/22882807,本文代码下载地址:http://download.csdn.net/detail/wjl_mgqs/7141871)

@WebService
public interface UserService {

    /**
     * 列出用户名
     * @return
     */
    public List<String> listUserName();
    
    /**
     * 根据邮箱查出用户信息
     * @param name
     * @param email
     * @return
     */
    public List<User> findUser(@WebParam(name="email")String email);
}

@WebService(endpointInterface="org.wjlmgqs.service.UserService",serviceName="user")
public class UserServiceImp implements UserService{

    @Override
    public List<String> listUserName() {
        return  new UserDaoImp().listUserName();
    }

    @Override
    public List<User> findUser(String email) {
        return new UserDaoImp().findUser(email);
    }

}


四:启动服务及客户端

public class UserWebService {
  public static void main(String[] args) {
    WebLogger.showInfo("开始发布WebService");
        UserService userService= new UserServiceImp();
        String address="http://localhost:8080/user";
        Endpoint.publish(address,userService);
        try {
            Thread.sleep(1000*60*5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    WebLogger.showInfo("WebService发布结束");
    }
}

public class UserWebServiceClient {
    
    public static void main(String[] args) {
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  
        factory.setServiceClass(UserService.class);
        factory.setAddress("http://localhost:8080/user");
        UserService userService = (UserService) factory.create();
        List<User> findUser = userService.findUser("wang");
        for(User u : findUser){
            System.out.println(u.toString());
        }
    }
}


五:最终运行结果

遇到的问题解决:

1:运行的过程中可能出现异常:Exception in thread "main" java.lang.LinkageError: 正在从引导类加载器加载 JAXB 2.1 API, 但此 RI (来自jar:file:/E:/dd/Eclipse/WebServiceDemo/WebContent/WEB-INF/lib/jaxb-impl-2.2.6.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) 需要 2.2 API。请使用授权目录机制将 jaxb-api.jar 放在引导类加载器中。

原因:JDK版本过低

解决办法:在main方法中运行:System.out.println(System.getProperty("java.endorsed.dirs")); 输出jdk中jre的lib路径,然后在改目录下建立endorsed,并放置apache-cxf-2.7.10\lib\endorsed目录下的jar包。另外也可以通过升级JDK版本来解决

2:控制台其它异常,基本都是少包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WJL_MGQS

本不富裕的收入,还得买服务器

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值