WebService认识一
前言:感觉好悲剧,先是下了个Apatche?CXF3.0.0,然后根据官方的文档写了代码,但是发现编译都通不过,想想肯定是Jar包的问题,但是官方用的Maven的方式配置的Jar,个人对Maven不熟,而且网上根本就没这个版本的资料,无奈:换了个2.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.10libendorsed目录下的jar包。另外也可以通过升级JDK版本来解决
2:控制台其它异常,基本都是少包。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |