Web Service简单入门示例

Web Service简单入门示例

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Web Service简单入门示例

    我们一般实现Web Service的方法有非常多种。当中我主要使用了CXF Apache插件和Axis 2两种。

    Web Service是应用服务商为了解决每一个问题而提供的在线服务方案,其主要採用了SOAP(Simple Object Access Protocol)协议,传输数据格式使用XML格式来描写叙述。因此也具有跨平台的特性。

  

web广泛用到的技术:
  1. TCP/IP:通用
    网络协议。被各种设备使用
  2. HTML
    标准通用标记语言下的一个应用):通用用户界面,能够使用HTML标签显示数据
  3. Java:写一次能够在不论什么系统执行的通用
    编程语言,由于java具有跨平台特性
  4. XML
    标准通用标记语言下的一个子集):通用数据表达语言,在web上传送结构化数据的easy方法
他们的特点是其开放性。跨平台性,开放性正是Web services的基础。

以下是使用CXF Apache的插件实现Web Service的一个简单入门实例

1========新建一个服务接口

package com.clark;

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

@WebService
public interface IHelloWorld {
    
    public String sayHello(@WebParam(name=”name”)String name);
    
    public int plus(int a,int b);
}
2========服务接口实现类

package com.clark.impl;

import com.clark.IHelloWorld;

public class HelloWorldImpl implements IHelloWorld {

    @Override
    public String sayHello(String name) {
        return “Hello Wolrd ,”+name;
    }

    @Override
    public int plus(int a, int b) {
        return a+b;
    }

}

3============服务端

package com.clark.service;

import javax.xml.ws.Endpoint;

import com.clark.impl.HelloWorldImpl;

public class WebServiceApp {
    public static void main(String[] args) {
        System.out.println(“web service start”);
        HelloWorldImpl implementor = new HelloWorldImpl();
        String address = “http://localhost:8080/IHelloWorld”;
        Endpoint.publish(address, implementor);
        System.out.println(“web service started”);
    }
}

4============client(以下主要是针对Java普通程序的)
package com.clark.client;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import com.clark.IHelloWorld;

public class HelloWorldClient {
    public static void main(String[] args) {
        JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
        svr.setServiceClass(IHelloWorld.class);
        svr.setAddress(“http://localhost:8080/CXFWebService/service/IHelloWorld”);
        IHelloWorld hw = (IHelloWorld) svr.create();
        String name = hw.sayHello(” CXF Apache implements Web Service”);
        int result = hw.plus(2, 3);
        System.out.println(name);
        System.out.println(result);
    }
}

4==============client(针对Spring中集成Web Service的Web开发)
package com.clark.web;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.clark.IHelloWorld;

public class HelloWorldClient {
    public static void main(String[] args) {
        System.out.println(“Web Service start……….”);
        ApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext.xml”);
        
        IHelloWorld helloWorld = (IHelloWorld)context.getBean(“client”);
        
        String name = helloWorld.sayHello(“1111111111”);
        int result = helloWorld.plus(3, 4);
        System.out.println(name+”  “+result);
        
        System.out.println(“Web Service end……….”);
    }
}

5============Spring 的 applicationContext.xml配置
<?xml version=”1.0″ encoding=”UTF-8″?

>
<beans xmlns=”http://www.springframework.org/schema/beans”
                 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
                 xmlns:jaxws=”http://cxf.apache.org/jaxws”
                 xsi:schemaLocation=”
                       http://www.springframework.org/schema/beans

                       http://www.springframework.org/schema/beans/spring-beans.xsd
                       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd”>

    <jaxws:endpoint
                              id=”helloWorld”
                              implementor=”com.clark.impl.HelloWorldImpl”
                              address=”/IHelloWorld” />
   
                <bean id=”client” class=”com.clark.IHelloWorld”
                           factory-bean=”clientFactory” factory-method=”create”/>
    
                 <bean id=”clientFactory” class=”org.apache.cxf.jaxws.JaxWsProxyFactoryBean”>
                            <property name=”serviceClass” value=”com.clark.IHelloWorld”/>
                            <property name=”address”

                                              value=”http://localhost:8080/CXFWebService/service/IHelloWorld”/>
                  </bean>
</beans>

6=============Spring中集成Web Service服务(CXF Servlet的配置),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” xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd” id=”WebApp_ID” version=”2.5″>
  <display-name>CXFWebService</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 
  <context-param>
      <param-name>contextConfigLocation</param-name>
      <!– <param-value>classpath:applicationContext.xml</param-value> –>
      <param-value>WEB-INF/applicationContext.xml</param-value>
  </context-param>
 
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
 
  <servlet>
                     <servlet-name>CXFServlet</servlet-name>
                     <display-name>CXFServlet</display-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>
                      <url-pattern>/service/*</url-pattern>
               </servlet-mapping>
</web-app>

7=============启动服务,地址栏输入
http://localhost:8080/CXFWebService/service/IHelloWorld?

wsdl可以看到对应的SOAP协议在规格OK

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117642.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是QT[通俗易懂]

    什么是QT[通俗易懂]QT是什么?它能做什么?Qt是一个1991年由QtCompany开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。简单来说,QT可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。QT学习需要避免的坑QT分为4.0版本和5.0版本他们之间的差别很大,不通用!!!不通用!!!不通用!!!所以要么你学习4.0要么你学习5….

    2022年5月13日
    38
  • 物联网网络架构_物联网技术有哪些

    物联网网络架构_物联网技术有哪些系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

    2022年9月18日
    2
  • css3中的width:100vh以及calc(100vh + 10px)

    css3中的width:100vh以及calc(100vh + 10px)vh/vwvh:相对于视窗的高度,视窗被均分为100单位的vh;vw:相对于视窗的宽度,视窗被均分为100单位的vw;vmax:相对于视窗的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax;vmin:相对于视窗的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin;视区所指为浏览器内部的可视区域大小,即window.innerWidth/window.innerHeight大小,不包含任务栏标题栏以及底部工具栏的浏览器区域大小。calccalc是英

    2022年4月29日
    92
  • Mysql 实现多种逻辑删除方案

    Mysql 实现多种逻辑删除方案Mysql实现多种逻辑删除方案新增逻辑删除字段方式多deleted值deleted:0代表未删除,删除时把deleted赋值为时间戳UNIX_TIMESTAMP(NOW())采用备份表方式最近在做公司项目的时候,对于表的逻辑删除,和其他同事出现了不同意见,故查阅了一些blog,结合自己的实际情况,再次做了笔记,以备后查。在实际的项目开发中,对于某些业务数据,一般都不会采用物理删除的方式,…

    2022年5月5日
    188
  • matlab中wavedec2,[ZZ] matlab中小波变换函数dwt2和wavedec2 系数提取函数appcoef2和detcoef2…

    matlab中wavedec2,[ZZ] matlab中小波变换函数dwt2和wavedec2 系数提取函数appcoef2和detcoef2…https://zhidao.baidu.com/question/88038464.htmlDWT2是二维单尺度小波变换,其可以通过指定小波或者分解滤波器进行二维单尺度小波分解。而WAVEDEC2是二维多尺度小波分解。DWT2的一种语法格式是[cA,cH,cV,cD]=dwt2(X,‘wname‘);而对应的WAVEDEC2的语法格式是[C,S]=wavedec2(X,N,‘wname‘),其中…

    2022年7月23日
    9
  • stata15无法识别调用plus外部命令,报错:command XXX is unrecognized如何解决?

    stata15无法识别调用plus外部命令,报错:command XXX is unrecognized如何解决?stata15无法识别调用plus外部命令,报错:commandXXXisunrecognized如何解决?解决办法:查看stata文件夹下是否有profile.do文件;如果没有,新建profile.do文件;新建的方法可以打开stata,打开do-file编辑器;内容写为(参考连玉君老师Stata:外部命令的搜索、安装与使用):adopath+“D:\应用软件\Stata15\ado\plus”sysdirsetPLUS“D:\应用软件\Stata15\

    2022年10月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号