`
weigang.gao
  • 浏览: 491630 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

CXF2.1 HelloWorld

    博客分类:
  • CXF
 
阅读更多

环境:Jdk版本1.6.0_03(如果你使用Jdk7也许会非常顺利,因此在这里有必要把jdk版本说明下)

           CXF版本2.1

说明:版本不同,引入的jar包也相应的有所不同

cxf简单例子

cxf java项目的目录结构以及jar包,如图

步骤:

1.接口HelloWorld.java

package com.demo;

import java.util.List;

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


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

 2.实现HelloWorld接口,编写HelloWorldImpl.java

package com.demo;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.jws.WebService;

@WebService(endpointInterface="com.demo.HelloWorld",serviceName="HelloWorld")
public class HelloWorldImpl implements HelloWorld {

           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;
          }
}

 3.编写bean

package com.demo;

public class User {
	private String name;
	
	private String description;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}
}

 4.编写服务端用于启动服务

package com.demo;
import javax.xml.ws.Endpoint;

public class webServiceApp {
           public static void main(String[] args) {
        	   
        	   System.out.println(System.getProperty("java.endorsed.dirs"));
                     System.out.println("web service start");
                     HelloWorldImpl implementor= new HelloWorldImpl();
                     String address="http://localhost:9000/helloWorld";
                     Endpoint.publish(address, implementor);
                     System.out.println("web service started");
                     
                   
            }
}

 5.编写客户端用于测试 

package com.demo;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class HelloWorldClient {
         public static void main(String[] args) {
                   JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
                   svr.setServiceClass(HelloWorld.class);
                   svr.setAddress("http://localhost:9000/helloWorld");
                   HelloWorld hw = (HelloWorld) svr.create();//创建一个代理类
                   
                   User user = new User();
                   user.setName("Tony");
                   user.setDescription("test");
                   
                   System.out.println(hw.sayHiToUser(user));
        	 
         }
}

 

problem:在第4步启动服务是会报如下错误

Exception in thread "main" java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader,

but this RI (from jar:file:/D:/eclipse4.4/workspace/CXFDemo/lib/jaxb-impl-2.1.6.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class)

needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader.(See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)

翻译:Exception in thread "main" java.lang.LinkageError: 正在从引导类加载器加载 JAXB 2.1 API, 但此 RI (来自jar:file:/E:/jinwork/cxf/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 放在引导类加载器中。(请参阅 http://java.sun.com/j2se/1.6.0/docs/guide/standards/)

解决办法:

1.首先获取到endorsed目录。

public class MainClass {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(System.getProperty("java.endorsed.dirs"));
    }
}

输出:D:\software\jdk1.6\jre\lib\endorsed

 

2.找到相应位置,将apache-cxf-2.1\lib下的jaxb-api-2.1.jar文件放到D:\software\jdk1.6\jre\lib\endorsed目录下即可。如果没有endorsed目录,则手动建立该目录。

 

  • 大小: 16.4 KB
分享到:
评论

相关推荐

    WebService (一) CXF 入门 HelloWorld

    **WebService (一) CXF 入门 HelloWorld** 在IT行业中,WebService是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行互操作。本篇将详细介绍如何使用Apache CXF框架来创建...

    Spring3整合CXF2.7.10

    implementor="#helloWorld" address="/HelloWorld"/&gt; ``` #### 2.4 部署和测试 - 在Spring配置完成后,可以通过CXF的Servlet部署到Tomcat或其他Servlet容器中。 - 在Web应用的`web.xml`中配置CXF的Servlet监听...

    cxf webservice 应用

    &lt;jaxws:endpoint id="helloWorldEndpoint" implementor="#helloWorld" address="/HelloWorld"/&gt; ``` 3.4 调用服务 客户端可以通过CXF的JAXB或者SOAP客户端API来调用服务,或者直接使用HTTP请求调用RESTful服务。 ...

    Apache_CXF

    cxf-codegen.sh wsdl2java -d /path/to/src/main/java -p com.example.services -b /path/to/wsdl/bindings.xml /path/to/wsdl/helloWorld.wsdl ``` #### 三、CXF 与 Spring 的整合 - **目的**:利用 Spring 框架...

    web server 的 cxf 框架及使用说明

    &lt;jaxws:endpoint id="helloWorld" implementor="com.example.HelloWorldServiceImpl" address="/HelloWorld"/&gt; ``` #### 3.4 部署到Web服务器 - 将上述配置和实现打包成WAR文件,然后部署到Web服务器,如Tomcat...

    CXF框架webservice教程.pdf

    HelloWorld proxy = (HelloWorld) factory.create(); System.out.println(proxy.sayHello("World")); } } ``` 当你运行`HelloWorldClient`时,它会调用服务器上的`sayHello`方法,并打印出结果。 总结来说,...

    CXF实现webservice

    这个例子中,`/hello/world`路径会返回"Hello, World!"。 ### 5. CXF的扩展性 除了基本的Web服务功能,CXF还提供了丰富的扩展,例如: - **数据绑定**:CXF支持JAXB(Java Architecture for XML Binding)进行对象...

    Apache_cxf_学习笔记.docx

    public class HelloWorldImpl implements HelloWorld { @Override public String sayHello(String name) { return "Hello " + name; } } ``` - **启动服务**:启动 Tomcat 或其他支持的 Servlet 容器,访问 `...

    WebService_CXF学习.doc

    通过以上步骤,可以构建一个简单的HelloWorld示例,从而进一步了解CXF框架的基本用法和功能。 通过上述介绍,我们可以看到,**CXF** 不仅是一个强大的WebService框架,而且具有高度的灵活性和扩展性,能够满足各种...

    WebService_CXF学习

    #### 四、Apache CXF HelloWorld 实例 - **步骤**: 1. **下载安装**:从 Apache 官方网站下载 Apache CXF,版本为 2.2.2。 2. **创建 Java 项目**:使用 Eclipse 或 IntelliJ IDEA 创建一个新的 Java 项目。 3....

    JAVA的WebService支持.

    return "Hello, World!"; } } ``` ### 实现工具和技术栈 对于上述几种Java WebService技术,常见的实现工具和技术栈包括Apache CXF、Spring Boot等。例如,Apache CXF提供了强大的框架来支持JAX-WS、JAX-RS等...

Global site tag (gtag.js) - Google Analytics