加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

cxf webservice 完整例子

发布时间:2020-12-16 21:42:32 所属栏目:安全 来源:网络整理
导读:我们的环境是eclipse,maven。 在开发java webservice时,有两个比较流行的框架:axis2和cxf。cxf可以无缝的和spring集成,而axis2需要打包成aar文件,在tomcat下面跑。于是我们选择了cxf开发webservice。 下面一步步的介绍用cxf开发服务端和客户端的例子。

我们的环境是eclipse,maven。

在开发java webservice时,有两个比较流行的框架:axis2和cxf。cxf可以无缝的和spring集成,而axis2需要打包成aar文件,在tomcat下面跑。于是我们选择了cxf开发webservice。

下面一步步的介绍用cxf开发服务端和客户端的例子。

首先开发服务端:

一:在pom.xml文件中加入依赖:

? <dependency>
?? <groupId>org.apache.cxf</groupId>
?? <artifactId>cxf-api</artifactId>
?? <version>2.5.0</version>
? </dependency>
? <dependency>
?? <groupId>org.apache.cxf</groupId>
?? <artifactId>cxf-rt-frontend-jaxws</artifactId>
?? <version>2.5.0</version>
? </dependency>
? <dependency>
?? <groupId>org.apache.cxf</groupId>
?? <artifactId>cxf-rt-bindings-soap</artifactId>
?? <version>2.5.0</version>
? </dependency>
? <dependency>
?? <groupId>org.apache.cxf</groupId>
?? <artifactId>cxf-rt-transports-http</artifactId>
?? <version>2.5.0</version>
? </dependency>
? <dependency>
?? <groupId>org.apache.cxf</groupId>
?? <artifactId>cxf-rt-ws-security</artifactId>
?? <version>2.5.0</version>
? </dependency>

然后会在maven dependencies文件夹中看到引用的jar包

二:开发服务的接口类和实现类

首先接口类:

package com.mycompany.webservice.server;

import javax.jws.WebService;

@WebService
public interface Greeting {
?? public String greeting(String userName);
}

然后实现类:

package com.mycompany.webservice.server;

import java.util.Calendar;
import javax.jws.WebService;

@WebService(endpointInterface = "com.mycompany.webservice.server.Greeting")
public class GreetingServiceImpl implements Greeting {

public String greeting(String userName) {
? return "Hello " + userName + ",currentTime is "
??? + Calendar.getInstance().getTime();
}
}

服务端的代码开发就到此了。下面要配置文件。

在application.xml中:

添加

<!--=============== 实现类的bean,需要spring注入 ============================-->

<bean id="greetingServiceImpl" class="com.mycompany.webservice.server.GreetingServiceImpl"/>
<jaxws:endpoint id="greetingService"? implementor="#greetingServiceImpl"?? address="/Greeting" />

在web.xml中:

添加

<servlet>?
??????? <servlet-name>CXFServlet</servlet-name>?
??????? <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>?
??????? <load-on-startup>1</load-on-startup>?
??? </servlet>?
??? <servlet-mapping>?
??????? <servlet-name>CXFServlet</servlet-name>?

<!--==这个设置很重要,那么我们的webservice的地址就是http://localhost:8080/yourProgramName/webservice/Greeting===-->
??????? <url-pattern>/webservice/*</url-pattern>?
??? </servlet-mapping>

好了。到此我们的服务端就开发好了。。

就可以通过http://localhost:8080/yourProgramName/webservice/Greeting?wsdl 访问看到我们的wsdl了。

下面开发我们的客户端,来调用上面的服务。

package com.mycompany.webservice.client;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;


public class GreetingServiceClient {
public static void main(String[] args) {
? //创建WebService客户端代理工厂
? JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
? //注册WebService接口
? factory.setServiceClass(Greeting.class);
? //设置WebService地址
? factory.setAddress("http://localhost:8080/yourProgramName/webservice/Greeting");
? Greeting greetingService = (Greeting)factory.create();
? System.out.println("invoke webservice...");
? System.out.println("message context is:"+greetingService.greeting("gary"));??
}
}

好了客户端也开发完成。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读