CXF webservice

本文详细介绍了使用Apache CXF进行WebService发布时遇到的jar包版本冲突问题,通过检查并更新特定目录下的jar包版本解决了问题,并提供了实际的代码示例。此外,还分享了如何配置web.xml文件以及客户端代码的生成方法,帮助开发者提高工作效率。
部署运行你感兴趣的模型镜像
说实话,一切知识只要你细心,都能在官网找到,但有些朋友浪费很长时间,就是搞不懂。戒骄戒躁,静下心来。
最近有个同事,凡事都和犟嘴,我躲都躲不了,言必称百度,网易,facebook,google,多小的问题都能上升到哥德巴赫猜想的理论高度,而实际上工作效率极其低下。
我这里想说的是, 少些理论多些实际,你看的见的理论都是从你看不见的地方总结出来的。一步一个脚印吧。

cxf简单不能在简单的webservice发布,难点只有一个,那就是与jdk6冲突问题。网上许多解决方案,但是忽略了一个,jar包版本问题。

${JAVA_HOME}\jdk6\jre\lib\endorsed
在次检查CXF中的jar包,是否是2.2.1.1以上版本,若不然还是报错。删除其他的jax-api 开头的jar必须删除要不还是冲突。

2:服务端代码

package com.cxf.service.server;


import java.util.List;

import javax.jws.WebParam;
import javax.jws.WebService;


/**
  * This class was generated by Apache CXF 2.3.3
  * 2012- 05- 18T15:26:41.003+08:00
  * Generated source version: 2.3.3
  *
  */
 
@WebService ( name = "orderService" )
public interface OrderService {

     String sayHi( @WebParam(name= "text")String text);
    String sayHiToUser(User user);
    String[] SayHiToUserList(List<User> userList);
}



实现类:

package com.cxf.service.server;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.jws.WebService;

@WebService (endpointInterface = "com.cxf.service.server.OrderService" , serviceName = "orderService" )
public class OrderProcessImpl implements OrderService {

     Map<Integer, User> users = new LinkedHashMap<Integer, User>();

      public String sayHi(String text) {
           return "Hello " + text;
     }

      public String sayHiToUser(User user) {
           users.put( users.size() + 1, user);
           return "Hello " + user.getName();
     }

      public String[] SayHiToUserList(List<User> userList) {
          String[] result = new String[userList.size()];
           int i = 0;
           for (User u : userList) {
              result[i] = "Hello " + u.getName();
              i++;
          }
           return result;
     }
}
2:web.xml
<? xml version ="1.0" encoding= "UTF-8" ?>
<! DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd" >
< web-app>
      <context-param >
           <param-name >contextConfigLocation </ param-name>
           <param-value >WEB-INF/beans.xml </ param-value>
      </context-param >


      <listener >
           <listener-class >
               org.springframework.web.context.ContextLoaderListener
           </ listener-class>
      </listener >
      <servlet >
           <servlet-name >CXFServlet </ servlet-name>
           <display-name >CXF Servlet </ display-name>
           <servlet-class >
              org.apache.cxf.transport.servlet.CXFServlet
           </ servlet-class>
           <init-param >
               <param-name >config-location </ param-name>
                <param-value >/WEB-INF/beans.xml </ param-value>
           </ init-param>
           <load-on-startup >1 </ load-on-startup>
      </servlet >

      <servlet-mapping >
           <servlet-name >CXFServlet </ servlet-name>
           <url-pattern >/services/* </ url-pattern>
      </servlet-mapping >

</ web-app>
源码就不上传了,太简单了。
3:客户端代码,为了避免兼容性,也是本人太懒我采用的是自动代码生成。请看ant文件内容:

<?xml version="1.0"?>
<project name= "cxf wsdl2java" basedir= "." default= "cxfWSDLToJava">   
   <property name="cxf.home" location = "${basedir}/WebRoot/WEB-INF/"/>


   <path id="cxf.classpath" >
      <fileset dir="${cxf.home}/lib" >
         <include name= "**/*.jar"/>
      </fileset>
   </path>     
   <target name="cxfWSDLToJava" >
      <java classname= "org.apache.cxf.tools.wsdlto.WSDLToJava" fork= "true">
         <arg value= "-client"/>
         <arg value= "-d"/>
         <arg value= "client"/>
         <arg value= "http://localhost:8080/webserviceCXF/services/OrderService?wsdl" />
         <classpath>
            <path refid= "cxf.classpath"/>
         </classpath>
      </java>
   </target>
</project>

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值