首页 > 编程语言 >Java中WebService实例

Java中WebService实例

时间:2023-06-27 22:01:00浏览次数:39  
标签:Web Java WebService yjpeng 实例 HelloService http com public


Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。

Web Service的关键技术和规则:

1.XML:描述数据的标准方法.

2.SOAP:表示信息交换的协议(简单对象访问协议).

3.WSDL:Web服务描述语言.

4.UDDI:通用描述、发现与集成,他是一种独立于平台,基于XML语言的用于在互联网上描述商务的协议。

 

一、利用JDK web服务api实现,这里使用基于SOAP message的Web Service:

1.首先创建一个Web Services项目,作为Web services Endpoint.

2.创建一个HelloService.Java类

 

package com.yjpeng.hello;

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.xml.ws.Endpoint;

@WebService
public class HelloService {
	
	@WebMethod
	public String sayHello(String message){
		return "Hello ," + message;
	}
	
	public static void main(String[] args) {
		//create and publish an endPoint
		HelloService hello = new HelloService();
		Endpoint endPoint = Endpoint.publish("http://localhost:8080/helloService", hello);
	}
}

 

3.使用apt编译HelloService.java(例如: apt -d bin(bin存放编译后的文件目录) scr/com/yjpeng/hello/HelloService.java)后,会生成jaxws目录。

4.使用java com.yjpeng.hello.HelloService执行HelloService.java文件,在浏览器中输入http://localhost:8080/helloService?wsdl出现如下图

 

使用wsimport命令生成客户端:wsimport -p com.yjpeng.webservice -keep http://localhost:8080/helloService?wsdl这时会在当前目录中生成如下文件:

 

6.编写好客户端文件HelloClient.java

package com.yjpeng.hello;

 

import com.yjpeng.webservice.HelloServiceService;

 

public class HelloClient {
public static void main(String[] args) {
HelloServiceService helloServiceService = new HelloServiceService();
com.yjpeng.webservice.HelloService helloService = helloServiceService.getHelloServicePort();
System.out.println(helloService.sayHello("你好"));
}
 
}

运行结果在控制台输出 hello,你好  证明利用JDK web服务API实现web service成功!

 

二 在Java Web项目中开放一个webservice接口实例

1.引入需要的jar包 

2.创建一个接口类IAddNumbers.java

 

package com.yjpeng.webservice;

public interface IAddNumbers {
	public int addNumbers(int a, int b);
}

 3.创建一个AddNumberImpl.java实现IAddnumbers.java接口类

 

 

package com.yjpeng.webservice;

import javax.jws.WebService;

import com.sun.xml.ws.transport.http.servlet.WSServlet;

@WebService(targetNamespace="http://webservice.yjpeng.com", serviceName="AddNumberImplService",
		portName="AddNumberImpl")
public class AddNumberImpl implements IAddNumbers {
	public int addNumbers(int a, int b) {
		return a + b;
	}
}

4.在WEN-INF目录下创建一个sun-jaxws.xml文件 

 

 

<?xml version="1.0"?>
<endpoints version="2.0"
  xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
  <endpoint name="AddNumberImpl" 
     implementation="com.yjpeng.webservice.AddNumberImpl"
     url-pattern="/addNumberImpl"/>
 </endpoints>

 5.在web.xml文件中增加

 

<servlet>
		<servlet-name>AddNumberService</servlet-name>
		<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>AddNumberService</servlet-name>
		<url-pattern>/addNumberImpl</url-pattern>
	</servlet-mapping>
	<listener>
		<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
	</listener>

 6.部署web项目 启动相应部署服务器。访问http://localhost:8080/TestJaxWebService/addNumberImpl?wsdl 这样每次启动web服务器就开放了一个web service的接口。

 

 

 

 

 

 

 

标签:Web,Java,WebService,yjpeng,实例,HelloService,http,com,public
From: https://blog.51cto.com/nethub/6566856

相关文章

  • Java并发(十二)----线程应用之多线程解决烧水泡茶问题
    1、背景统筹方法,是一种安排工作进程的数学方法。它的实用范围极广泛,在企业管理和基本建设中,以及关系复杂的科研项目的组织与管理中,都可以应用。怎样应用呢?主要是把工序安排好。比如,想泡壶茶喝。当时的情况是:开水没有;水壶要洗,茶壶、茶杯要洗;火已生了,茶叶也有了。怎么办?办法甲......
  • 阿里的Java开发规范插件验证
    阿里最近有点“烦”,但是作为技术人,更多关注的还是技术层面,其他的就交给有关机构和时间来证明。最近有项工作借鉴了阿里的Java开发规范,为了能让其落地,需要验证方案,而这个Java开发规范提供了对应的验证插件,因此从使用层面,了解一下。目前该插件实现了开发手册中的的53条规则,大部分基于......
  • 对第三阶段PTA集训及Java课程的分析与反思
    前言:本阶段PTA集训共有8-11题目集,涵盖了很多知识点,尤其是成绩计算系列题目,几乎包含了Java目前所学的所有内容,写下来非常不容易(可能对于我这种小菜鸡来说很难)。涵盖的知识点包括对Stirng类型的处理,对象数组的创建与处理,抽象类的使用,异常的处理,逻辑的训练,设计模式的实操。题量不大......
  • java-集合类学习
    LinkedHashMapAspecialconstructorisprovidedtocreatealinkedhashmapwhoseorderofiterationistheorderinwhichitsentrieswerelastaccessed,fromleast-recentlyaccessedtomost-recently(access-order).Thiskindofmapiswell-suitedtobu......
  • JAVA判断是否是IDEA里启动
      /***判断是否是idea里面启动*@returntrue:是false:否*/privatestaticbooleancheckRunInIDEA(){try{Class.forName("com.intellij.rt.execution.application.AppMainV2");returntrue;}cat......
  • java8多线程使用示例
    使用CompletableFuture.allOf实现异步执行同步搜集结果/***@authorwjq*@create2022-03-1216:19*/publicclassTestCompleteFuture{privatestaticfinalintcorePoolSize=10;//核心线程数privatestaticfinalint......
  • Java第三阶段题目集总结
    一、前言这一阶段的题目集主要课程成绩设计的迭代,在这一题目里主要用到了正则表达式,准确来说正则表达式在这一题里占据十分重要的位置。这一阶段还考查到了数据结构的内容,像是栈和队列的使用。同时还涉及到了map和set数组的使用。在这一阶段我学到了许多新的知识,也对前面所学的内......
  • Maven构建项目后项目报Error错误Java compiler level does not match the version of
     Maven构建项目后项目报Error错误JavacompilerleveldoesnotmatchtheversionoftheinstalledJavaprojectfac 项目->右键->Properties->ProjectFacets->修改facets中Java版本(下拉箭头出)为要用的版本Maven构建项目需注意1.项目右键->Properties->buildpath->jdk2.项......
  • Java静态导入(import static)需谨慎
    从Java5开始引入了静态导入语法(importstatic),其目是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序。我们先来看一个不使用静态导入的例子,也就是一般导入:publicclassMathUtils{//计算圆面积publicstaticdoublecalCircleArea(doubler){ret......
  • Java 方法的使用
    Java方法的使用1.方法的调用在main方法中调用了某个方法,在栈里会开辟对应的方法栈,根据代码执行到最后或者返回出去后,这个方法的栈就结束并返回到原来调用方法的地方。继续执行main方法的代码,直到最后main方法栈也结束了。2.方法的好处使用方法可以极大程度减少使用相同......