Spring4 + CXF3.1.5 RESTful Web Service 实战例子 (调试通过)

WebService Spring4.3+cxf3.1.5整合Demo 1、准备好cxf的jar包,maven配置 dependency> groupId>org.apache.cxfgroupId> artifactId>cxf-rt-transports-httpartifactId> version>3.1.5version> dependency> dependency> groupId>org.apache.cxfgr 阅读详情

RESTful 简化了 web service 的设计,它不再需要 wsdl ,也不再需要 soap 协议,而是通过最简单的 http 协议传输数据 ( 包括 xml 或 json) 。既简化了设计,也减少了网络传输量(因为只传输代表数据的 xml 或 json ,没有额外的 xml 包装),JAX-RS ,全称 Java API for RESTful WebService。该规范定义了一系列的注解。

下面为大家介绍使用 cxf 开发 RESTful WebService

Cxf3.1.5 实现 jax-rs 的全套规范。在使用它时,最好全部包含它的lib(在它安装目录下的lib下面),从其官网上下载apache-cxf-3.1.5.zip,解压后,在解压的lib目录就是运行时需要的文件。

服务端

Spring4 +cxf3.1.5 开发 RESTfulweb service。

在eclipse上,选择开发动态web 应用项目,然后选择tomcat8作为web server。

然后,在项目视图中选择build path,去添加spring4,cxf3.1.5的lib (为了省事,直接把cxf下面的lib全部包含过来就可以了),如图:

同时,你得把这些libs都copy到 webcontent|web-inf|lib下面去,这样,eclipse在制作WAR文件时,会把这些.jar文件copy到war文件中去。

否则,tomcat会因为找不到这些jar文件而无法启动this web service.

本例子中,开发环境: 

服务器端: eclipse + tomcat8 + CXF3.1.5 + Sring4 

自己得去下载Spring4的jar包和CXF3.1.5的jar包,放到eclipse这个项目的web-content | web-info| lib下面


Client端: eclipse  + CXF3.1.5 + httpclient + JSON + Java SE8


在tomcat上面的运行的server代码

EmployeeWSRestFulService.java (interface)

package cxf.server;

import java.util.*;
import javax.ws.rs.core.*; 
import javax.ws.rs.*;
/**
 * 
 * @author bigtree
 * restful URI 匹配原理,它是咋构成的? access the below page
 *http://blog.youkuaiyun.com/bigtree_3721/article/details/51158758
 *
 */
@Path("/")
public interface EmployeeWSRestFulService {
	/**
	 * JSON提交
	 * url:
	 * http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws/addUser
	 * Json format:{"user":{"id":123,"name":"newBook"}}
	 * @param book
	 * @return
	 */
	@Path("/addUser/")
	@POST
	@Consumes({"application/json","application/xml"})
	Response addUser(User user);
	  
	@Path("/delUser/{id}/")
	@DELETE
	@Consumes({"application/json","application/xml"}) 
	Response delUser(@PathParam("id") String id);
	  
	@Path("/updateUser/")
	@PUT
	@Consumes({"application/json","application/xml"})   
	Response updateUser(User user);
	 
	  /* http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws/getUserById/1/
	   * JSON: response content as below
	   * 
	   * HTTP/1.1 200 OK
	   * {"user":{"id":1,"name":"bigtree"}}
	   */
	/*
	 * XML response content as below
	 * 
	 * HTTP/1.1 200 OK
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?><user><id>1</id><name>bigtree</name></user>
	 * 
	 */
	
	@Path("/getUserById/{id}/")
	@GET
	@Produces({"application/json","application/xml"}) //json is high priority
	User getUserById(@PathParam("id") String id);

	  /* http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws/
	   * response:
	   * HTTP/1.1 200 OK
	   * {"user":[{"id":1,"name":"bigtree"},{"id":2,"name":"jackie"}]}
	   * 
	   */
	@Path("/")
	@GET
	//json is high priority, default is application/xml
	@Produces({"application/json","application/xml"}) 
	List<User> findAllUsers();
	
}

MyServiceImpl.java (server 的实现类)

package cxf.server;
import java.util.*;
import javax.ws.rs.*;
import javax.ws.rs.core.*;
import java.net.URI;  
import javax.ws.rs.core.Response.*; 
public class MyServiceImpl implements EmployeeWSRestFulService {
private void init(){
   User user = new User();
   user.setId("1");
   user.setName("bigtree");
   users.put(user.getId(), user);
   user = new User();
   user.setId("2");
   user.setName("jackie");
   users.put(user.getId(), user);
  }
 
 private HashMap<String, User> users = new HashMap<String,User>();
 public MyServiceImpl(){
   init();
 }
 public Response addUser(User user) {
   users.put(user.getId(), user);
   System.out.println("User entity to add: user id= "+user.getId()+" name="+user.getName());
   System.out.println("adding user succeed");
   System.out.println("total users in pool="+users.size());
   return Response.ok().build();
 }
 public Response delUser(String id) {
   User muser=users.remove(id);
   if(muser == null) { 
    // this user with this id not exist
    System.out.println("delUser(): no user entry found to delete");
    return Response.status(Status.BAD_REQUEST).build();
    }
   else
      return Response.ok().build();
 }
 public Response updateUser(User user) {
   users.put(user.getId(), user);
   System.out.println(users.get("1").getName());
   return Response.ok().build();
 }
 public User getUserById(String id) {
 User muser=users.get(id);
 if(muser==null)
 System.out.println("getUserById(): no user entry found");
 return muser;
 }
  public List<User> findAllUsers() {
   List<User> userlist = new ArrayList<User>();
   Iterator userit =  users.keySet().iterator();
   while(userit.hasNext()){
    userlist.add(users.get(userit.next()));
   }
   return userlist;
    }
 }

 Spring 配置文件 applicationContext.xml  配置内容如下, (applicationContext是 Spring从tomcat启动需要的缺省配置文件)

<?xml version="1.0" encoding="GBK"?>
<!-- Spring配置文件的根元素,使用spring-beans-4.0.xsd语义约束 -->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:cache="http://www.springframework.org/schema/cache" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xsi:schemaLocation=
      "http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.0.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
       http://www.springframework.org/schema/cache 
       http://www.springframework.org/schema/cache/spring-cache-4.0.xsd
       http://cxf.apache.org/jaxrs 
       http://cxf.apache.org/schemas/jaxrs.xsd
       ">
            
      <bean id="WSRestfulBean" class="cxf.server.MyServiceImpl"/>
      <jaxrs:server id="userService" address="/userws">
        <jaxrs:serviceBeans>
          <ref bean="WSRestfulBean"/>
        </jaxrs:serviceBeans>
       </jaxrs:server>
</beans>

web.xml 文件配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  
  <!-- 配置spring -->
    
  <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- 配置cxf servlet -->
  <servlet>
        <servlet-name>CXF315</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXF315</servlet-name>
        <url-pattern>/WSRest/*</url-pattern>
    </servlet-mapping>

</web-app>

上面绿色部分需要自己写的。

然后在eclipse中以输出上面的项目(eclipse会产生一个.war文件),启动tomcat,然后从进入tomcat管理页面(

缺省是http://localhost:8080),点击"manager app",然后选择“WAR file to deploy”,选择上面产生的war文件,即可部署该web service服务了。


客户端

因为 RESTful 就是利用最原始的 http 协议传输数据,所以客户端其实就是一个 http客户端,有以下几种实现方式

1) JAX-RS Client API --cxf3.0+

2)Proxy 【使用起来简单,代理封装通信细节】

3)Apache HttpClient

4) WebClient

为了简单我使用了 HttpClient方式

代码如下

WSRestFulClient.java

package JAXRSClient;
/*
 * How Request URI is Matched?
 * 
 * http://blog.youkuaiyun.com/bigtree_3721/article/details/51158758
 * 
Lets assume 
1) you have a web application called 'rest' (example, a 'rest.war' archive). 
2) CXFServlet's url-pattern is "/test/*" (here it is defined in web.xml as below example shows
<servlet>
<servlet-name>CXF315</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXF315</servlet-name>
<url-pattern>/WSRest/*</url-pattern>
</servlet-mapping>
3)  Finally, jaxrs:server's address is "/bar" 
(it is defined in Spring's bean xml such as applicationContext.xml as below shown) 


<bean id="WSRestfulBean" class="cxf.server.MyServiceImpl"/>   
<jaxrs:server id="userService" address="/userws">
<jaxrs:serviceBeans>
  <ref bean="WSRestfulBean"/>
</jaxrs:serviceBeans>
</jaxrs:server>


Requests like /rest/test/bar or /rest/test/bar/baz will be delivered to one of the resource classes in a given jaxrs:server 
endpoint. For the former request to be handled, a resource class with @Path("/") should be available, in the latter case - 
at least @Path("/") or a more specific @Path("/baz").
 * 
 */


/*
 * Output format:
 * 
 *  http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws/getUserById/1/
 *  
 *  Single user information format:
**   JSON response format as below:
*   HTTP/1.1 200 OK
*   {"user":{"id":1,"name":"bigtree"}}  	   
**  XML response format as below: 
    * HTTP/1.1 200 OK
    * <?xml version="1.0" encoding="UTF-8" standalone="yes"?><user><id>1</id><name>bigtree</name></user>
    * 
* Multi-users response data format:
* JSON response format as below
*  HTTP/1.1 200 OK
*  {"user":[{"id":1,"name":"bigtree"},{"id":2,"name":"jackie"}]}
*
** XML response format as below
 * HTTP/1.1 200 OK
 * <?xml version="1.0" encoding="UTF-8"?><users><user><id>1</id><name>bigtree</name></user><user><id>2</id><name>jackie</name></user></users>
 */


/* console output 
 * 
 * httpMethodgo(): request string={"user":{"name":"Jane","id":"5"}}
HTTP/1.1 200 OK


HttpPutgo(): request string={"user":{"name":"Jane5","id":"5"}}
HTTP/1.1 200 OK


get one user via Get method of WS-Restful
HTTP/1.1 200 OK
{"user":{"id":5,"name":"Jane5"}}
receive OK rsp
id=5 name=Jane5
get all users via Get method of WS-Restful
HTTP/1.1 200 OK
{"user":[{"id":1,"name":"bigtree"},{"id":2,"name":"jackie"},{"id":5,"name":"Jane5"}]}
receive OK rsp
id=1 name=bigtree
id=2 name=jackie
id=5 name=Jane5
deleting user failed
HTTP/1.1 400 Bad Request


HTTP/1.1 200 OK
{"user":[{"id":1,"name":"bigtree"},{"id":2,"name":"jackie"},{"id":5,"name":"Jane5"}]}
receive OK rsp
id=1 name=bigtree
id=2 name=jackie
id=5 name=Jane5
 * 
 */


import org.apache.http.*;  
import org.apache.http.client.*;   
import org.apache.http.client.methods.*;
import org.apache.http.impl.client.*;
import org.apache.http.util.*;
import org.apache.http.entity.*;


import java.net.URI;
import java.util.*;
import java.io.*;


import org.json.*;
import cxf.server.*;


public class WSRestFulClient {
	public static void main(String[] args) throws Exception {
		 User muser = new User();
		 muser.setId("5");
		 muser.setName("Jane");
		 
		//post method to add user
		 httpMethodgo("http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws/addUser", muser); 
		
		 //put method to update user
		 muser.setName("Jane5");
		 HttpPutgo("http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws/updateUser", muser); 		 
	    /*
		 * get a specified user via ID
		 */
		System.out.println("get one user via Get method of WS-Restful");
		HttpGetgo("http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws/getUserById",5, true);
		
		System.out.println("get all users via Get method of WS-Restful");
		/*
		 * get all users
		 */
		HttpGetgo("http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws",1,false);  
		//delete this user
		 muser.setId("100");
		 HttpDeletego("http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws/delUser", muser); 
		 //get all users again
		 HttpGetgo("http://localhost:8080/MyWebserviceRestfulSpringServer/WSRest/userws",1,false);  
		 return;
	  }
	
	private static void HttpPutgo(String uri, User muser ) throws Exception { 
		 CloseableHttpClient httpclient = HttpClients.createDefault();
		 HttpPut httpMethod = new HttpPut(uri);
		 httpMethod.addHeader("content-type","application/json");


		 JSONObject c = new JSONObject();
		 c.put("name", muser.getName());
		 c.put("id", muser.getId());
		 
		 JSONStringer js = new JSONStringer();
		 js.object();
		 js.key("user").value(c);
		 js.endObject();
		 
		 String ms=js.toString();
		 /** Console output
		  * HttpPutgo(): request string={"user":{"name":"Jane5","id":"5"}}
		  */
		 System.out.println("HttpPutgo(): request string="+ms); 
		 StringEntity entity = new StringEntity(ms,"UTF-8"); 
		 httpMethod.setEntity(entity);
		 CloseableHttpResponse response2 = httpclient.execute(httpMethod);
		 System.out.println(response2.getStatusLine());
		 String rst=EntityUtils.toString(response2.getEntity());
		 /**
		  * console output:
		  * HTTP/1.1 200 OK
		  */
         System.out.println(rst); 
	 }
	
	 private static void httpMethodgo(String uri, User muser) throws Exception { 
		 CloseableHttpClient httpclient = HttpClients.createDefault();
		 HttpPost httpMethod = new HttpPost(uri);
		 httpMethod.addHeader("content-type","application/json");
		 
		 JSONObject c = new JSONObject();
		 c.put("name", muser.getName());
		 c.put("id", muser.getId());
		 
		 JSONStringer js = new JSONStringer();
		 js.object();
		 js.key("user").value(c);
		 js.endObject();
		 
		 String ms=js.toString();
		 /** console output:
		  * httpMethodgo(): request string={"user":{"name":"Jane","id":"5"}}
		  */
		 System.out.println("httpMethodgo(): request string="+ms); 
		 
		 StringEntity entity = new StringEntity(ms,"UTF-8"); 
		 httpMethod.setEntity(entity);
		 
		 CloseableHttpResponse response2 = httpclient.execute(httpMethod);
		 System.out.println(response2.getStatusLine());
		 String rst=EntityUtils.toString(response2.getEntity());
		 /**
		  * HTTP/1.1 200 OK
		  */
         System.out.println(rst);    
	 }
	 
	 private static void HttpGetgo(String resource, Integer userid, boolean SingleResult) throws Exception {  
		 CloseableHttpClient httpclient = HttpClients.createDefault();
		 HttpGet request=null;
		 try {
			 if (SingleResult) {
				 //get one user via id
				request=new HttpGet(resource+"/"+userid.toString());
			 } 
			 else 	 
			    request = new HttpGet(resource);
			 
			 HttpResponse response = httpclient.execute(request); 
			 try {
				    System.out.println(response.getStatusLine());
				    String rst=EntityUtils.toString(response.getEntity());
	                System.out.println(rst);
	                
	              if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK) {
	                 System.out.println("receive OK rsp");
	                 HttpEntity entity = response.getEntity();
	                 if(entity == null) {
	                	 System.out.println("entity is null");
	                	return;
	                }
	                
	                JSONObject jsonrsp = null;
	                jsonrsp = new JSONObject(new JSONTokener(rst));
	              
	                if(SingleResult==false) {
	                 JSONArray mobj=jsonrsp.getJSONArray("user");
	                 Iterator it=mobj.iterator();
	                 while(it.hasNext()){
	                	JSONObject obj=(JSONObject)it.next();
	                	  System.out.println("id="+obj.getInt("id")+" name="+obj.getString("name"));
	                    } 
	                 } 
	                else {
	                	JSONObject obj=jsonrsp.getJSONObject("user");
	                	System.out.println("id="+obj.getInt("id")+" name="+obj.getString("name"));
	                   }
	                } 	              
	            else {
	                System.out.println("receive error rsp");
	                }
	      	    } 
			finally {
	                ;
	            }
		    } 
		 finally {
	            httpclient.close();
	       }
	 }  


private static void HttpDeletego(String resource, User muser) throws Exception {  
	 CloseableHttpClient httpclient = HttpClients.createDefault();
	 HttpDelete request=null;
	 try {
		 //delete one user via id
		  request=new HttpDelete(resource+"/"+muser.getId().toString());
		  HttpResponse response = httpclient.execute(request); 
		  if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
			  System.out.println("deleting user succeed");  
		  } 
		  else {
			  System.out.println("deleting user failed");   
		  }
		  
		  System.out.println(response.getStatusLine());
		  String rst=EntityUtils.toString(response.getEntity());
          System.out.println(rst);    
	     } 
	 finally {
           httpclient.close();
      }
  }  
}

另外,如果你不想用注解来标注代码,也可以用spring的 xml来配置,就像配置java bean一样,在上面的例子中,在applicatoinContent.xml中,可以写进如下的代码(例子)。

<bean id="restfulRegeditService" class="zxn.ws.service.impl.RestfulRegeditServiceImpl" />

   <!--restful服务 -->
    <jaxrs:server id="restServiceContainer" address="/regedit">
        <jaxrs:serviceBeans>
            <ref bean="restfulRegeditService" />
        </jaxrs:serviceBeans>
        <jaxrs:extensionMappings>
            <entry key="json" value="application/json" />
            <entry key="xml" value="application/xml" />
        </jaxrs:extensionMappings>
        <jaxrs:languageMappings>
            <entry key="en" value="en-gb" />
        </jaxrs:languageMappings>
    </jaxrs:server>

JSON-Java API page:

http://stleary.github.io/JSON-java/index.html

使用 TCPMON 这个工具监控以下,可以看到 http body 中只是简单的 json串,没有像 soap 协议那样的“信封”包装

使用 RESTful 设计风格 + 传输 json 数据格式 可以大大的简化 web service 的设计并提高传输效率

其实springMVC也采用了RESTful的设计风格,不过它使用的是spring自己的注解,这些注解和jax-rs中的注解惊奇的类似。如果大家有兴趣可以研究一下springMVC的RESTful特性。


Apache CXF 开发 JAX-RS Restful web service - 集成 Spring 和 Hibernate 阅读详情

相关推荐

SOAP与RESTful服务通信的本质差异与工程选型指南

Web Services 是现代分布式系统解耦协作的基础范式,其核心在于如何在异构系统间建立可信、可演进的通信契约。SOAP 以 WSDL 为法律文本,依托 XML 和 WS-Security 实现强类型、强安全、事务一致的远程调用,适用于金融清算、跨企业B2B等强契约场景;RESTful 则基于 HTTP 动词语义与资源建模,强调无状态、松耦合与渐进演化,是微服务与云原生架构的事实标准。二者差异不在格式(XML/JSON),而在契约绑定层级、错误传播机制与运维治理逻辑。理解 restful api 的幂等

weixin_34342905的博客 368

CXF入门开发

Server端项目结构、Server端pom.xml、Server端实体类、Server端接口、Server端接口实现、Map类型返回值适配器、Server端自定义拦截器(调用方法前执行)、Server端启动类、启动Server端、Client端自动生成、Client端pom.xml、Client端自定义拦截器(发送SOAP消息时调用)、Client端测试类、......

tongxin_tongmeng的博客 1004

Java WebService实战:从HelloWorld到WSDL接口开发与客户端调用详解

WebService作为一种基于SOAP协议和WSDL描述的标准化服务接口技术,其核心价值在于实现跨平台、跨语言的异构系统间可靠通信。其工作原理是通过XML格式的SOAP消息在HTTP等协议上传输,并由WSDL文件明确定义服务端点、操作及数据结构,形成机器可读的契约。在Java生态中,JAX-WS标准与Apache CXF框架的结合,为构建高互操作性的企业级服务提供了强大支持。通过代码优先的开发模式,开发者可以快速定义服务接口并发布服务,而客户端则可通过动态调用、工具生成存根等多种方式实现集成。本文以经典的

weixin_34067102的博客 313

Spring+Apache CXF集成

Spring+Apache CXF集成 本文主要介绍Spring4.2.5与Apache CXF3.1.5集成。采用Maven搭建环境。 1 配置pom.xml文件,如下所示: <properties> <cxf.version>3.1.5</cxf.version> <spring....

csdn_fanhehua的博客 541

从SOAP到REST:WebService核心原理、技术演进与实战解析

WebService作为实现异构系统间互操作性的关键技术,其核心原理在于通过标准化的协议栈实现跨平台、跨语言的远程调用。从技术架构上看,它基于XML、SOAP、WSDL等开放标准构建了一套完整的服务描述、发现与调用机制。SOAP协议定义了基于XML的消息信封格式,确保传输的可靠性与安全性;WSDL则提供了机器可读的服务契约,支持客户端代码的自动生成。这种设计思想深刻影响了现代分布式系统架构,其契约先行、松耦合的理念在微服务时代得以延续。尽管在互联网场景下,更轻量级的RESTful API凭借其基于HTTP原

tomfish 592

医院HIS系统对接实战:从WSDL解析到高可用HTTP调用的全流程指南

在系统集成领域,SOAP协议与WSDL(Web Services Description Language)是定义和调用Web服务的经典技术组合。其原理基于XML Schema定义强类型数据结构,通过WSDL文件作为服务契约,明确规定了服务端点、操作和消息格式,确保了跨平台、跨语言交互的准确性和可靠性。该技术的核心价值在于为医疗、金融等传统行业中的异构系统提供了标准化的集成方案,尤其适用于对数据格式、安全性和事务一致性要求严苛的场景。在实际应用中,开发者常需将WSDL定义的SOAP服务通过HTTP/HTTP

weixin_34405557的博客 345

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean提示类找不到的解决办法

问题 在用

weixin_43934104的博客 3335

apache-cxf-3.1.5.zip

cxf 3.15 的jar包,包含了cxf 中的所有包

CXF开发RESTful风格的Web Service

转自:http://www.itnose.net/detail/6160699.html 前言: 1、Web Service笔记(五):利用CXF结合Spring开发web service 2、XML学习笔记(三):Jaxb负责xml与javaBean映射  3、jax-rs详解 4、可以使用浏览器的工具调试:如 Firefox 的RESTClient 和

qq_34288090的博客 574

cxf-3.1.5 和 cxf-3.3.13 JAVA7和JAVA8对应CXF资源

JAVA7和JAVA8对应CXF资源 WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- 3.2之前版本 java 6 3.1 之前版本 只能上传一个资源,这次合并了

apache-cxf2.7.18官方版最稳定版本

这个是apache软件基金会开发的免费WebService框架

webService详细

webService 一 WebService概述 1.1 WebService是什么 WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准...

GardenerHan的博客 3万+

Spring4.3整合CXF3.0.4需要使用的Jar包--亲测可用

Spring4.3整合CXF3.0.4需要使用的Jar包,Spring4.0以上需要使用CXF3.0以上的jar包才可以,之前使用CXF2.7会报各种错误,cxf-core-3.0.4.jar,cxf-rt-bindings-soap-3.0.4.jar

Java调用WebService实战:从WSDL解析到生产级调优

在企业级系统集成领域,WebService作为一种基于SOAP协议的标准化通信技术,通过WSDL定义服务契约,确保了跨平台、跨语言交互的可靠性与安全性。其核心原理在于利用XML进行数据封装与传输,并通过HTTP/HTTPS协议进行通信,在金融、电信等对事务和安全有严格要求的场景中具有不可替代的价值。从技术实现层面,Java开发者通常借助JAX-WS标准API或Apache CXF等框架,通过解析WSDL生成客户端代码,完成服务调用。本文聚焦于**JAX-WS**与**Apache CXF**这两种主流技术方

weixin_30709061的博客 349

构建多节点AI代理网络:OpenClaw协同框架与实战部署指南

在分布式系统与AI代理技术领域,多节点协同是提升智能体能力与扩展性的核心挑战。其原理在于通过设计清晰的通信协议与数据同步机制,使分散的智能体能够共享状态、知识与技能,从而实现1+1>2的群体智能。这一技术价值在于突破了单点AI的能力上限,为构建复杂、鲁棒且可扩展的自动化系统提供了基础。典型的应用场景包括跨设备任务编排、企业级工作流自动化以及大规模AI代理集群的管理。本文聚焦于OpenClaw这一开源AI代理框架,深入探讨如何利用模块化设计(如网状网络与任务控制中心)实现记忆共享与统一调度,解决多网关协同中的

weixin_42521032的博客 298

Dify工作流构建案例:迭代驱动的多维深度搜索

为了克服这些挑战,我们可以设计一个能够智能协同内部知识库与外部互联网搜索,并最终由大型语言模型(LLM)进行深度整合与精准回答的高级工作流。

同名公众号:dify实验室 2291

spring4.x + cxf3.x整合实例

1、开发工具:Eclipse4.5   + tomcat7  + jdk8  + cxf3.1.7  + spring4.1.9 2、首先Eclipse新建两个web工程:一个模拟server端发布webservice,,一个模拟client端,调用webservice, 如下图,我建的两个工程:分别为cxfSpringTestService和cxfSpringTestCl

倔强的蜗牛 1万+

详解大端模式和小端模式

详解大端模式和小端模式 一、大端模式和小端模式的起源         关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令

ce123的技术博客 19万+

spring-ws搭建webservice服务

本文主要介绍如何根据spring提供的spring-ws构建一个简单的webservice服务。 在开始之前,首先需要新建一个maven项目,这里不再赘述如何新建maven web项目。 1、配置pom文件 使用spring-ws构建webservice服务,需要依赖spring-ws-core,spring-core <project xmlns="http://maven.apache

Ron.Zheng 9681

【FDTD】仿真目录(共计 16 篇)

对于完美吸收型边界条件,有时候我们需要设置将仿真结构穿过边界条件区域,具体原因可以阅读下文。在进行 S 参数扫描时,当考虑到材料的色散特性时,我们可以如下文一样选择计算群延迟。仿真,我们需要构建仿真结构与仿真区域,对于它们的尺寸,应该遵循下文进行设定。中存在多种不同的网格类型,具体可以参考下文,这部分内容仅作了解即可。尺寸的设置问题,对于 mesh 的最小尺寸,可以参考下文。的边界条件设置也十分重要,下文中我们对边界条件进行总结。仿真中我们可以设定参与仿真的模式数量,可以参考下文。尺寸的实例,详见下文。

u011699626的博客 502

用 ADBC 把动态查询做得又快又稳:从 CL_SQL_STATEMENT 到安全取数的工程化实践

本文介绍了ABAP中ADBC(ABAP Database Connectivity)技术的核心用法与最佳实践。ADBC作为Open SQL的补充,适用于动态查询、数据库特性调用等场景。文章通过示例代码详细演示了使用ADBC执行查询的完整流程:创建SQL语句、执行查询获取结果集、批量装载数据到内表,以及分包读取处理大数据量。特别强调了动态SQL的安全防护措施,包括输入转义和参数绑定等防注入技术。同时对比了ADBC与Open SQL的适用场景,指出ADBC更适合需要动态访问数据库原生功能的场合。文章还分析了代码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1770

Spring整合CXF webservice restful 实例

webservice restful接口跟soap协议的接口实现大同小异,只是在提供服务的类/接口的注解上存在差异,具体看下面的代码,然后自己对比下就可以了。 用到的基础类 User.java   [源码]  @XmlRootElement(name="User")    public class User {            privat

ForeverLove的博客 540

android 9.0Settings休眠时间项(屏幕超时)添加永不休眠功能

在9.0的系统产品开发中,系统中默认息屏时间为1分钟,可以通过在Setting中的息屏时间选项设置对应的息屏时间,但是在开发平板类的产品中,需要实现永不休眠的功能,所以需要在Settings中的息屏时间中添加永不休眠时间这一项来实现这个功能,接下来看息屏时间的相关功能,来添加这个功能

安卓兼职framework和app工程师的博客 2055
上一篇: 使用CXF做webservice简单例子
下一篇: Eclipse中tomcat出现timeout
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值