用eclipse创建webservice
【WebService】接口的测试方法
【WebService】接口的测试方法有以下多种方式:一、通过WSCaller.jar工具进行测试:前提:知道wsdl的url。
wsCaller可执行程序的发布方式为一个wsCaller.jar包,不包含Java运行环境。
你可以把wsCaller.jar复制到任何安装了Java运行环境(要求安装JRE/JDK 1.3.1或更高版本)的计算机中,用以下命令运行wsCaller:java -jar wsCaller.jar使用wsCaller软件的方法非常简单,下面是wsCaller的主界面:首先在WSDL Location输入框中输入你想调用或想测试的Web Service的WSDL位置,如“/axis/services/StockQuoteService?wsdl”,然后点“Find”按钮。
wsCaller就会检查你输入的URL地址,并获取Web Service的WSDL信息。
如果信息获取成功,wsCaller会在Service和Operation下拉列表框中列出该位置提供的Web Service服务和服务中的所有可调用的方法。
你可以在列表框中选择你要调用或测试的方法名称,选定后,wsCaller窗口中间的参数列表框就会列出该方法的所有参数,包括每个参数的名称、类型和参数值的输入框(只对[IN]或[IN, OUT]型的参数提供输入框)。
你可以输入每个参数的取值。
如下图:这时,如果你想调用该方法并查看其结果的话,只要点下面的“Invoke”按钮就可以了。
如果你想测试该方法的执行时间,则可以在“Invoke Times”框中指定重复调用的次数,然后再按“Invoke”按钮。
wsCaller会自动调用你指定的方法,如果调用成功,wsCaller会显示结果对话框,其中包括调用该方法所花的总时间,每次调用的平均时间和该方法的返回值(包括返回值和所有输出型的参数)。
如下图:wsCaller软件是基于Axis库(Apache eXtensible Interaction System)开发的,Axis库的介绍及其版权信息请参见Apache Software Foundation的网站/。
javawebservice接口调用实例
Java Web Service 是一种轻量级的、基于标准的 Web 协议进行通讯的服务。
它允许在异构系统之间进行交互,并支持跨评台。
在本篇文章中,我们将介绍如何在 Java 中使用 Web Service 接口进行调用的实例。
1. 确定 Web Service 接口我们需要确定要调用的 Web Service 接口。
通常情况下,我们可以通过 WSDL(Web Services Description Language)文档来获取接口的相关信息,包括接口的位置区域、方法名以及参数列表等。
2. 创建 Java 项目在 Eclipse 或者其他 Java 开发环境中,我们可以创建一个新的 Java 项目。
在项目中,我们需要引入相关的 Web Service 库,以便在代码中进行调用。
3. 生成客户端代码通过 WSDL 文档,我们可以使用工具来生成客户端代码。
这些工具通常包括 wsimport(用于生成客户端代码)等。
生成的客户端代码将包含接口的相关信息,以便我们在代码中进行调用。
4. 编写调用代码在生成客户端代码之后,我们可以编写调用代码来实现对 Web Service 接口的调用。
在代码中,我们需要首先创建对应的 WebService 客户端实例,然后通过该实例来调用接口中的方法。
5. 编译和运行完成代码编写之后,我们需要对代码进行编译,并运行相应的测试。
在运行的过程中,我们可以观察接口的调用情况,以及调用结果。
6. 处理异常情况在实际的调用过程中,我们经常会遇到各种异常情况,比如网络连接失败、接口调用超时等。
我们需要在代码中添加相应的异常处理逻辑,以保证程序的稳定性和可靠性。
通过以上步骤,我们可以实现在Java 中对Web Service 接口的调用。
通过这种方式,我们可以实现不同系统之间的数据交互,实现数据共享和系统集成。
我们也可以利用 Web Service 在不同评台之间实现数据的传输和处理,为企业的信息化建设提供更多的可能性。
使用Eclipse开发基于SpringBoot+JAX-RS的Restful服务
一.搭建工程(开发环境JDK1.8,外置Tomcat需8.5以上版本)1.新建maven项目2.修改pom文件,内容如下:<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>springboot.jaxrs</groupId><artifactId>RestWS</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.0.RELEASE</version></parent><dependencies><!-- Web应用依赖:主要用来进行Web应用开发 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 排除Web依赖提供的Tomcat容器,由下面的Tomcat依赖提供Tomcat容器 --><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency><!-- 模板引擎依赖:主要用来提供@Controller和html页面等的访问 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- RESTful服务依赖:主要用来提供Jersey RESTful Web服务框架的支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jersey</artifactId></dependency><!-- Tomcat容器依赖:主要用来提供编译和测试时的Tomcat支持,打war包时不会包含到lib --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><!-- 测试组件依赖:用来提供单元测试的支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><!-- 排除JUnit4的包,只引入JUnit5的包 --><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><!-- 打包后的文件名 --><finalName>springboot</finalName><plugins><!-- SpringBoot打包插件,指定main方法的类 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.springboot.SpringBootRun</mainClass> </configuration></plugin></plugins></build></project>3.新建一个springboot.jaxrs的包,并建一个SpringBootRun类package springboot.jaxrs;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder;importorg.springframework.boot.web.servlet.support.SpringBootServletInitializer;@SpringBootApplicationpublic class SpringBootRun extends SpringBootServletInitializer {//通过外置Tomcat启动SpringBoot项目@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {// TODO Auto-generated method stubreturn builder.sources(SpringBootRun.class);}//通过内置Tomcat启动SpringBoot项目public static void main(String[] args) {SpringApplication.run(SpringBootRun.class, args);}}4.新建一个RestConfig类package springboot.jaxrs;import javax.ws.rs.ApplicationPath;import org.glassfish.jersey.server.ResourceConfig;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter;@Configuration@ApplicationPath("/services")public class RestConfig extends ResourceConfig {//注册服务public RestConfig() {//1.自动扫描com.springboot下面的服务packages("springboot.jaxrs");//2.手动注册服务//register(HelloWorldService.class);//register(TestService.class);System.out.println("WADL地址:http://localhost:8080/RestWS/services/application.wadl");}//添加跨域访问服务:只开放了WS访问,没有开放@Controller访问@Beanpublic CorsFilter corsFilter() {CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/ws/**", corsConfiguration); // 4 设置允许访问的地址过滤return new CorsFilter(source);}}5.新建一个springboot.jaxrs.controller的包,并建一个PagesController类package springboot.jaxrs.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.CrossOrigin;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;@CrossOrigin(origins = "*",maxAge = 3600)//如果想让@Controller允许跨域访问可以加上@CrossOrigin@Controller@RequestMapping("/pages")public class PagesController {@ResponseBody@RequestMapping(value = "/say", method = RequestMethod.GET)public String index() {return"Hello World";}@RequestMapping("/main")public String mainPage() {return"main";}}6.新建一个springboot.jaxrs.entity的包,并新建User类package springboot.jaxrs.entity;public class User {private String name;//姓名private String idNo;//身份证private String password;//密码public User(String name,String idNo,String password) { = name;this.idNo = idNo;this.password = password;}//重写HashCode方法,让程序判断身份证号码相同为同一个对象@Overridepublic int hashCode() {// TODO Auto-generated method stubreturn idNo.hashCode();}//重写equals方法,让程序判断身份证号码相同为同一个对象@Overridepublic boolean equals(Object obj) {// TODO Auto-generated method stubif(obj instanceof User){User user = (User) obj;return this.idNo.equals(user.getIdNo());}else {return false;}}@Overridepublic String toString() {// TODO Auto-generated method stubreturn"[name:"+name+",idNo:"+idNo+",password:"+password+"]";}public String getName() {return name;}public String getIdNo() {return idNo;}public void setIdNo(String idNo) {this.idNo = idNo;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}7.新建一个springboot.jaxrs.webservice包并新建UsersService类package springboot.jaxrs.webservice;import java.util.HashMap;import java.util.Map;import javax.inject.Singleton;import javax.ws.rs.Consumes;import javax.ws.rs.DELETE;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.PUT;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;import javax.ws.rs.core.Response.Status;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import er;@Path("/ws/users")@Singleton//设置为单例,要不然userMap每次都会new一个新的public class UsersService {Map<String,User> userMap = new HashMap<>();@GET@Path("/getAllUser")@Produces(value=MediaType.APPLICATION_JSON) //JSON方式返回public Response getAllUser() {try {String userJson = new ObjectMapper().writeValueAsString(userMap);return Response.status(Status.OK).entity(userJson).build();} catch (JsonProcessingException e) {// TODO Auto-generated catch blocke.printStackTrace();returnResponse.status(Status.OK).entity("{\"error\":\""+e.toString()+"\"}").build();}}@GET@Path("/{userid}/get")@Consumes(value=MediaType.APPLICATION_JSON) //JSON方式接受请求@Produces(value=MediaType.APPLICATION_JSON) //JSON方式返回public Response getById(@PathParam("userid") String userid) {try {String userJson = newObjectMapper().writeValueAsString(userMap.get(userid));return Response.status(Status.OK).entity(userJson).build();} catch (JsonProcessingException e) {// TODO Auto-generated catch blocke.printStackTrace();returnResponse.status(Status.OK).entity("{\"error\":\""+e.toString()+"\"}").build();}}@POST@Path("/{userid}/update")public Response update(@PathParam("userid") String userid, User user) { if(user.getName()!=null)userMap.get(userid).setName(user.getName());//if(user.getIdNo()!=null)//userMap.get(userid).setIdNo(user.getIdNo());if(user.getPassword()!=null)userMap.get(userid).setPassword(user.getPassword());String output = userid + " 属性修改成功!";return Response.status(Status.OK).entity(output).build();}@PUT@Path("/{userid}/addOrReplace")@Consumes(value=MediaType.APPLICATION_JSON) //JSON方式接受请求@Produces(value=MediaType.TEXT_PLAIN) //纯文本方式返回public Response addOrReplace(@PathParam("userid") String userid, User user) { try {userMap.put(userid,user);return Response.status(Status.OK).entity("增添用户成功,用户信息:"+user.toString()).build();}catch(Exception e) {return Response.status(Status.OK).entity("增添用户失败,错误信息:"+e.toString()).build();}}@DELETE@Path("/{userid}/delete")public Response delete(@PathParam("userid") String userid) {userMap.remove(userid);String output = userid + " 删除成功!";return Response.status(Status.OK).entity(output).build();}}8.在src/main/resources建立一个application.properties文件server.servlet.context-path=/RestWS9.至此,工程已经搭建完毕,可以直接运行SpringBootRun的main方法启动程序10.也可以把pom.xml文件的打包类型改为<packaging>war</packaging>用外置Tomcat运行(必须要Tomcat 8.5或以上版本)二.使用Java编写客户端进行访问测试(使用Junit5进行单元测试)11.在src/test/java新建一个junittest包并新建UserTest类,然后直接执行:右键->Run As->Junit Test即可,无需手动启动SpringBootRun服务package junittest;import .URI;import javax.ws.rs.client.ClientBuilder;import javax.ws.rs.client.Entity;import javax.ws.rs.client.WebTarget;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.Test;import org.junit.jupiter.api.MethodOrderer;import org.junit.jupiter.api.Order;import org.junit.jupiter.api.TestMethodOrder;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.context.annotation.Description;import springboot.jaxrs.SpringBootRun;import er;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)//搭配@Order可以实现按顺序执行,但是@Test一定要使用JUnit5的注解才起作用@SpringBootTest(classes = SpringBootRun.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)//指定了程序入口SpringBootRun和使用默认端口,执行JUnit Test的时候会自动启动项目,无需手动启动项目public class UserTest {private URI uri;private User user;@BeforeEachpublic void init() throws Exception {uri = new URI("http://127.0.0.1:8080/RestWS/services/ws/users");user = new User("xiaohong","ID0001","123456");}@Test@Order(1)@Description("添加或替换用户")public void addOrUpdateTest() {System.out.println("==================================1==================== ================");WebTarget target =ClientBuilder.newClient().target(uri).path("/"+user.getIdNo()+"/addOrReplace");Response res =target.request().accept(MediaType.TEXT_PLAIN).put(Entity.entity(user, MediaType.APPLICATION_JSON));System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}@Test@Order(2)@Description("获取单个用户")public void getByIdTest() {System.out.println("==================================2==================== ================");WebTarget target =ClientBuilder.newClient().target(uri).path("/"+user.getIdNo()+"/get");Response res =target.request().accept(MediaType.APPLICATION_JSON).get();System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}@Test@Order(3)@Description("修改用户")public void updateTest() {System.out.println("==================================3==================== ================");user.setName("小红");WebTarget target =ClientBuilder.newClient().target(uri).path("/"+user.getIdNo()+"/update");Response res =target.request().accept(MediaType.TEXT_PLAIN).post(Entity.entity(user, MediaType.APPLICATION_JSON));System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}@Test@Order(4)@Description("获取全部用户")public void getAllUserTest() {System.out.println("==================================4==================== ================");WebTarget target =ClientBuilder.newClient().target(uri).path("/getAllUser");Response res =target.request().accept(MediaType.APPLICATION_JSON).get();System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}@Test@Order(5)@Description("删除用户")public void deleteTest() {System.out.println("==================================5==================== ================");WebTarget target =ClientBuilder.newClient().target(uri).path("/"+user.getIdNo()+"/delete");Response res =target.request().accept(MediaType.APPLICATION_JSON).delete();System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}}三.使用html页面访问Restful服务12.在src/main/resources里新建static文件夹,再在static文件夹新建js,pages 2个文件夹,然后js文件夹引入axios.min.js,vue.min.js。
Axis2从入门到精通--Webservice在eclipse下开发教程
Axis2 教程文章分类:Java编程Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。
Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。
这些都将在后面的系列教程中讲解。
在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和C#调用这个WebService。
一、Axis2的下载和安装读者可以从如下的网址下载Axis2的最新版本:/axis2/在本文使用了目前Axis2的最新版本1.4.1。
读者可以下载如下两个zip包:axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip其中axis2-1.4.1-bin.zip文件中包含了Axis2中所有的jar文件,axis2-1.4.1-war.zip文件用于将WebService发布到Web容器中。
将axis2-1.4.1-war.zip文件解压到相应的目录,将目录中的axis2.war文件放到<Tomcat安装目录>\webapps目录中(本文使用的Tomcat的版本是6.x),并启动Tomcat。
在浏览器地址栏中输入如下的URL:http://localhost:8080/axis2/如果在浏览器中显示出如图1所示的页面,则表示Axis2安装成功。
图1二、编写和发布WebService对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。
在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。
其中POJO中所有的public方法将被发布成WebService方法。
下面我们来实现一个简单的POJO,代码如下:public class SimpleService{public String getGreeting(String name){return "你好 " + name;}public int getPrice(){return new java.util.Random().nextInt(1000);}}在SimpleService类中有两个方法,由于这两个方法都是public方法,因此,它们都将作为WebService方法被发布。
Eclipse+CXF开发Web服务、Tomcat部署
一、下载CXF包,apache-cxf-2.6.1.tar.gz,解压后得到文件夹apache-cxf-2.6.1图1二、创建服务端1、新建Dynamic Web ProjectFile—New—Project—Web—Dynamic Web Project;工程命名后Next,将“Default output folder”改为WebContent/WEB-INF/classes,Next;勾选“Generate web.xml deployment discriptor”。
图2图3图42、将解压后apache-cxf-2.6.1文件夹lib文件夹中的JAR文件导入工程下WebContent/WEB-INF/lib中,或直接复制到相应文件夹下,刷新工程。
3、创建服务接口工程右键—New—Interface,添加代码:package com.yxj;import javax.jws.WebService;import javax.jws.WebParam;import javax.jws.WebMethod;@WebServicepublic interface IcxfWB {@WebMethodString sayHello(@WebParam(name="name") String name);}说明:“@WebService”标记表示该接口是一个WebService服务,@ WebMethod标记表示WebService中的方法;@WebParam(name="paramName")表示方法中的参数,name属性限制了参数的名称,若没有指定该属性,参数将会被重命名。
4、创建服务实现类package com.yxj;public class CxfWBImpl implements IcxfWB {public String sayHello(String name) {return"Hello "+name;}}5、编辑WebContent/WEB-INF下web.xml文件<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0"><display-name>CXFService</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>WEB-INF/service-beans.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>CXFServlet</servlet-name><servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class></servlet><servlet-mapping><servlet-name>CXFServlet</servlet-name><url-pattern>/*</url-pattern></servlet-mapping></web-app>其中,<context-param>指定了spring的相应配置,在<param-value>中指定了配置文件的位置;<servlet-mapping>下的<url-pattern>指明了服务访问时地址的形式,“/*”代表URL地址中,包名称后直接跟服务endpoint地址,若指明<url-pattern>为“/webservice/*”,则URL为包名/ webservice/endpoint?wsdl。
NC开发webservice
Nc 开发webservice1.下载 eclipse-wtp-all ,集成了webservice开发插件下载eclipse-ncplugin nc开发插件,下载axis1.4以上下载可以到/xmglnet/kmp/add_show_list.asp?id=2660#hh webservice工具下载 下进行下载,jdk版本选择1.5以上下载 axis1.4 解压缩把其webapps目录下axis放到nchome/hotweb下,其中的lib下jar 包 要删除一些,不要和nchome/lib里的重复,保留四个axis.jar,axis-ant.jar,saaj.jar,wsdl4j-1.5.1.jar就可以2, 创建一个Webservice服务。
在eclipse中创建一个动态的web工程。
New->Project ->Dynamic Web Project。
在Target Runtime中设置服务,这里选择 apache-tomcat-V5.5,并设置tomcat目录3在工程的src下,写一个service类,比如:public class test2 {public String sayHi(String name){return"hi,"+name;}}public String sayHi(String name)就是要调用的远程方法在这个类的文件名上点击右键,选择”Web Services"->“Create Web Service”,就会出现下面的界面:要选上TestClient,这样创建Service的同时,会创建一个Service的test工程点击next选择方法名称如果点击“Launch”会打开刚才创建的WebService的测试界面,可以进行测试。
LogonWebServiceTest工程中。
点击“next”,会自动生成代理类,并出现选择测试方法的界面。
WebService接口实例说明文档
WebService接口说明文档文档说明本文档主要讲述如何用C Sharp创建一个简单的Web Service接口,并使用Java调用这个Web Service接口。
准备工作系统环境:安装JDK1.6或更新版本开发工具:Microsoft Visual Studio 2012、MyEclipse 10.5、axis2-1.6.2C Sharp服务端1.首先,创建一个Web Service项目。
依次点击:文件—新建—项目,在弹出的新建项目窗口中选择Web下的 空 Web 应用程序。
如下图:2.接下来我们需要创建我们的Web Service接口实现文件。
鼠标右击我们的项目,依次点击:添加—新建项,在弹出窗口中选择Web 服务。
可修改新建项的文件名,注意文件名后缀后.asmx。
如下图:新建完成后我们的项目结构如下:3.打开我们新建的MyService.asmx下的MyService.asmx.cs文件,可以看到其中已经有默认的HelloWorld方法。
我们可以直接运行查看下运行的效果,效果如下图:点击HelloWorld,再点击调用可以看到页面返回:4.接下来我们完善我们的Web Service接口功能。
主要对Web Service接口进行参数类型的测试,文本型、布尔型、数值型、类(Class)等。
新增Add()等运算方法:新增strcat()连接字符串方法:新增GetBool()返回布尔值方法:新增GetTest()返回测试类,并新增Test类运行我们的项目,可以看到我们的结果如下图:点击add方法测试:输入add的参数i和j点击调用按钮,可以看到返回计算结果:5.到此为止我们C Sharp创建的Web Service程序完成。
接下来看Java如何调用我们的Web Service接口。
Java调用Web Service准备对于一个Web Service接口我们当前只知道访问的地址,我们如何用Java去访问接口呢?已知Web Service接口地址:http://localhost:11766/MyService.asmx?WSDLJava调用Web Service的方式有以下1.使用HttpClient2.使用Xfire3.使用axis2本文档示例选择的是axis2,首先到axis2网站下载axis2,网址:/axis2/java/core/download.cgi当前最新版本1.6.2。
Eclipse_BPEL_使用详解
至此,ODE 安装成功。
1.3安装BPEL Designer插件
1)启动Eclipse,选择Help -> Install New Software,进入Install wizard,如下所示
)选择Add按钮,并输入如下地址:
/technology/bpel/update-site/,点击OK
2)点击Finish就会生成java类对应的wsdl文件和配置文件,并发布到tomcat中,同时
会生成调用服务的客户端,选择add(double,double),对该方法进行测试,如下所示:
选上AddService接口,点Ok,弹出伙伴链接类型定义,把名字取为Next。
要求输入Role Name,这里输入“
同时在属性视图中把ParterRole选为addProvider。
如下图所示:
以同样。
建立subPL设置
input后边对应的箭头,打开一个新的Editor对输入消息进行配置。
进去后选中类型,右键,就可以增加元素,并设置元素的类型,结果如下,其中a,b分别表示需要加减的2个
同理,处理其他3个Assign。
c)Invoke语句的设置
Invoke的作用是调用伙伴链接对应接口下的对应操作,还需要指定输入输出同理,处理InvokeSub(Invoke1):
同理,测试SubService,结果如下所示:4.4测试BPEL
本示例主要使用Eclipse开发环境,结合ODE解析器,解析BPEL调用WebService 目流程,并最终发布测试通过。
1.ODE服务器无法创建
重启Tomcat服务器及Eclipse。
eclipse根据wsdl文件生成webservice客户端-图例
eclipse根据wsdl文件生成webservice客户端一、前期准备: (1)1、配置log4j (1)2、log4j使用jar包: (2)3、wsdl使用jar包: (2)二、开始生成文件: (2)一、前期准备:1、配置log4j没有配置的场合提示下列的信息(可以不配置):(log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).log4j:WARN Please initialize the log4j system properly.Error: Missing argument to option -p)log4j.properties文件内容:log4j.rootLogger=info,stdout,R######################### Console Appender#######################log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%X{LKV}%d{yyyy-MM -dd HH:mm:ss,SSS}%c%t%L%p-%m%n######################### File Appender#######################log4j.appender.R=org.apache.log4j.DailyRollingFileAppender#log4j.appender.R.File=${WORKDIR}/TestWebService/WebRoot/logs/out.log#log4j.appender.R.File=${catalina.home}/WebRoot/logs/out.loglog4j.appender.R.File=D:/logs/TestWebService.loglog4j.appender.R.DatePattern = '.'yyyy-MM-ddyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%X{LKV}%d{yyyy-MM-dd HH:mm:ss,SSS}%c%t%L%p-%m%n######################### log level#######################.ibatis=debugmon.jdbc.SimpleDataSource=debugmon.jdbc.ScriptRunner=debug.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=d ebuglog4j.logger.java.sql.Connection=debuglog4j.logger.java.sql.Statement=debuglog4j.logger.java.sql.PreparedStatement=debug,stdoutlog4j.logger.java.sql.PreparedStatement=debug,stdout,R.jiahelife=debug.jiahelife.platform=error2、log4j使用jar包:log4j-1.2.8.jarcommons-discovery-0.2.jarcommons-logging.jar3、wsdl使用jar包:axis.jarwsdl4j-1.5.1.jar二、开始生成文件:具体操作如下图:然后点击Search按钮进入如下的画面,在输入框中输入WSDL2Java点击【OK】按钮进入下图:点击Arguments 的页面,进行如下设置: 12说明:1、WSDL文件生成的XML文件2、XML文件所在工作目录,以及生成后java文件的存放目录。
java-调用Webservice接口
java 调用webservice的各种方法总结现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!!由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和大家一起来研究研究webservice的各种使用方法。
一、利用jdk web服务api实现,这里使用基于SOAP message 的Web 服务1.首先建立一个Web services EndPoint:package Hello;import javax.jws.WebService;import javax.jws.WebMethod;import javax.xml.ws.Endpoint;@WebServicepublic class Hello {@WebMethodpublic String hello(String name) {return "Hello, " + name + "\n";}public static void main(String[] args) {// create and publish an endpointHello hello = new Hello();Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", hello);}}2.使用apt 编译Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,会生成jaws目录3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示4.使用wsimport 生成客户端使用如下:wsimport -p . -keep http://localhost:8080/hello?wsdl这时,会在当前目录中生成如下文件:5.客户端程序:1class HelloClient{2public static void main(String args[]) {3 HelloService service = new HelloService();4 Hello helloProxy = service.getHelloPort();5 String hello = helloProxy.hello("你好");6 System.out.println(hello);7 }8}9以上方法还稍显繁琐,还有更加简单的方法二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的利用xfire开发WebService,可以有三种方法:1一种是从javabean 中生成;2 一种是从wsdl文件中生成;3 还有一种是自己建立webservice步骤如下:用myeclipse建立webservice工程,目录结构如下:首先建立webservice接口,代码如下:1package com.myeclipse.wsExample;2//Generated by MyEclipse34public interface IHelloWorldService {56 public String example(String message);78} 接着实现这个借口:1package com.myeclipse.wsExample; 2//Generated by MyEclipse34public class HelloWorldServiceImpl implements IHelloWorldService { 56 public String example(String message) {7 return message;8 }910} 修改service.xml 文件,加入以下代码:1<service>2 <name>HelloWorldService</name>3 <serviceClass>4 com.myeclipse.wsExample.IHelloWorldService5 </serviceClass>6 <implementationClass>7 com.myeclipse.wsExample.HelloWorldServiceImpl8 </implementationClass>9 <style>wrapped</style>10 <use>literal</use>11 <scope>application</scope>12 </service> 把整个项目部署到tomcat服务器中,打开浏览器,输入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl,可以看到如下:然后再展开HelloWorldService后面的wsdl可以看到:客户端实现如下:1package com.myeclipse.wsExample.client;23import .MalformedURLException;4import .URL;56import org.codehaus.xfire.XFireFactory;7import org.codehaus.xfire.client.Client;8import org.codehaus.xfire.client.XFireProxyFactory;9import org.codehaus.xfire.service.Service;10import org.codehaus.xfire.service.binding.ObjectServiceFactory;1112import com.myeclipse.wsExample.IHelloWorldService;1314public class HelloWorldClient {15public static void main(String[] args) throws MalformedURLException, Exception {16// TODO Auto-generated method stub17Service s=new ObjectServiceFactory().create(IHelloWorldService.class);18XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());19String url="http://localhost:8989/HelloWorld/services/HelloWorldService";2021 try22 {2324 IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);25 String st=hs.example("zhangjin");26 System.out.print(st);27 }28 catch(Exception e)29 {30 e.printStackTrace();31 }32 }3334}35 这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net 做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:1public static void main(String[] args) throws MalformedURLException, Exception {2 // TODO Auto-generated method stub3 Service s=new ObjectServiceFactory().create(IHelloWorldService.class);4 XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire()); 567//远程调用.net开发的webservice8Client c=new Client(new URL("/webservices/qqOnlineWebService.asmx?wsdl"));9 Object[] o=c.invoke("qqCheckOnline", new String[]{"531086641","591284436"});1011//调用.net本机开发的webservice12Client c1=new Client(new URL("http://localhost/zj/Service.asmx?wsdl"));13Object[] o1=c1.invoke("HelloWorld",new String[]{});1415}三、使用axis1.4调用webservice方法前提条件:下载axis1.4包和tomcat服务器,并将axis文件夹复制到tomcat服务器的webapp文件夹中这里我就说一下最简单的方法:首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入http://localhost:8989/axis/HelloWorld.jws?wsdl,就会得到一个wsdl文件,其客户端调用方法如下:1import javax.xml.rpc.Service;2import javax.xml.rpc.ServiceException;3import javax.xml.rpc.ServiceFactory;45import .MalformedURLException;6import .URL;7import java.rmi.RemoteException;89import space.QName;1011public class TestHelloWorld {121314 public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {15 // TODO Auto-generated method stub1617 String wsdlUrl ="http://localhost:8989/axis/HelloWorld.jws?wsdl";18 String nameSpaceUri ="http://localhost:8989/axis/HelloWorld.jws";19 String serviceName = "HelloWorldService";20 String portName = "HelloWorld";2122 ServiceFactory serviceFactory = ServiceFactory.newInstance();23 Service afService =serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, serviceName));24 HelloWorldInterface proxy = (HelloWorldInterface)afService.getPort(new QName(nameSpaceUri, portName),HelloWorldInterface.class);25 System.out.println("return value is "+proxy.getName("john") ) ;2627 }2829}30四、使用axis2开发webservice(这里首先感谢李宁老师)使用axis2 需要先下载axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip/axis2/同理,也需要将axis2复制到webapp目录中在axis2中部署webservice有两种方法,第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明下面分别说明使用方法:1.pojo方式:在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。
webservice实现有多种方式
webservice实现有多种方式比如最常用的有axis框架,xfire框架,通过该框架可以发布wsdl接口,也可以实现webservice客户端,目前eclipse都有集成的插件,可以根据wsdl文件生成webservice客户端调用接口,但是这样部署的时候必须依赖框架的jar包,有时候可能因为环境等等原因,我们仅仅需要wsdl中的某一个接口,这时候可以通过http接口或socket接口直接发生xml 数据,来调用服务端webservice服务,其实webservice底层还是发送xml数据,只是框架封装了对xml数据进行序列化与反序列化操作,下面以两个简单的例子说明http方式和socket方式。
http实现webservice接口调用例子:[c-sharp]view plain copy1.import <a href="/base/17"class='replace_word' title="Java EE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.io.Buffe redReader;2.import java.io.IOException;3.import java.io.InputStreamReader;4.import java.io.OutputStreamWriter;5.import java.io.UnsupportedEncodingException;6.import .MalformedURLException;7.import .URL;8.import .URLConnection;9.10.public class HttpPostTest {11.void testPost(String urlStr) {12.try {13. URL url = new URL(urlStr);14. URLConnection con = url.openConnection();15. con.setDoOutput(true);16. con.setRequestProperty("Pragma:", "no-cache");17. con.setRequestProperty("Cache-Control", "no-cache");18. con.setRequestProperty("Content-Type", "text/xml");19.20. OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());21. String xmlInfo = getXmlInfo();22.out.write(new String(xmlInfo));23.out.flush();24.out.close();25. BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));26. String line = "";27. StringBuffer buf = new StringBuffer();28.for (line = br.readLine(); line != null; line = br.readLine()) {29. buf.append(new String(line.getBytes(),"UTF-8"));30. }31. System.out.println(buf.toString());32. } catch (MalformedURLException e) {33. e.printStackTrace();34. } catch (IOException e) {35. e.printStackTrace();36. }37. }38.39.private String getXmlInfo() {40.// 通过wsdl文件可以查看接口xml格式数据,构造调用接口xml数据41. String xml = "<SOAP-ENV:Envelope xmlns:SOAP-ENV=/"http://schemas.xml/soap/envelope//" xmlns:SOAP-ENC=/"/soap/e ncoding//" xmlns:xsi=/"/2001/XMLSchema-instance/" xmlns:xsd =/"/2001/XMLSchema/">"42. + "<SOAP-ENV:Body>"43. + "<m:getItemDetailSingle xmlns:m=/"http:xxxxxxxxxxxxxxxxxx//">"44. + "<itemMo>"45. + "<category>工厂类</category>"46. + "<city>北京</city>"47. + "<flag>1</flag>"48. + "<itemId>0</itemId>"49. + "<itemIndex>1</itemIndex>"50. + "<keyword></keyword>"51. + "<mobile>2147483647</mobile>"52. + "<password>123456</password>"53. + "<userName>sohu</userName>"54. + "</itemMo>"55. + "</m:getItemDetailSingle>"56. + "</SOAP-ENV:Body>"57. + "</SOAP-ENV:Envelope>";58.return xml;59. }60.61.public static void main(String[] args) throws UnsupportedEncodingException {62. String url = "http://localhost:9003/dataService/services/Job";63.new HttpPostTest().testPost(url);64. }65.}socke方式实现例子:[c-sharp]view plain copy1.import java.io.IOException;2.import java.io.InputStream;3.import java.io.InputStreamReader;4.import java.io.OutputStream;5.import .Socket;6.import .UnknownHostException;7.8.9.public class WebServiceClient {10.11./**12. * @param args13. * @throws IOException14. * @throws UnknownHostException15. */16.public static void main(String[] args) throws UnknownHostException, IOException {17. Socket socket = new Socket("localhost",9003);18. OutputStream os = socket.getOutputStream();19. InputStream is = socket.getInputStream();20.//System.out.println(socket.isConnected());21. String httpSend = "POST /dataService/services/Job HTTP/1.1/r/n"22. + "Content-Type:text/xml/r/n"23. + "Host:localhost:9003/r/n"24. + "Content-Length:1024/r/n"25. + "/r/n"26. + "<SOAP-ENV:Envelope xmlns:SOAP-ENV=/"http://schema/soap/envelope//" xmlns:SOAP-ENC=/"/s oap/encoding//" xmlns:xsi=/"/2001/XMLSchema-instance/" xmln s:xsd=/"/2001/XMLSchema/">"27. + "<SOAP-ENV:Body>"28. + "<m:getItemDetailSingle xmlns:m=/"http://localhost//">"29. + "<itemMo>"30. + "<category>工厂类</category>"31. + "<city>北京</city>"32. + "<flag>1</flag>"33. + "<itemId>0</itemId>"34. + "<itemIndex>1</itemIndex>"35. + "<keyword>String</keyword>"36. + "<mobile>2147483647</mobile>"37. + "<password>123456</password>"38. + "<userName>sohu</userName>"39. + "</itemMo>"40. + "</m:getItemDetailSingle>"41. + "</SOAP-ENV:Body>"42. + "</SOAP-ENV:Envelope>";43. os.write(httpSend.getBytes());44. os.flush();45.46. InputStreamReader ireader = new InputStreamReader(is);47. java.io.BufferedReader breader = new java.io.BufferedReader(ireader);48.49. String responseLine = "";50.51.while((responseLine = breader.readLine()) != null)52. {53. System.out.println(new String(responseLine.getBytes(),"UTF-8"));54. }55.56. System.out.println("");57.58. }59.60.}。
SAP和Java系统的Webservice实例
SAP和Java系统的Webservice实例关于Webservice的概念和原理,简单来讲,Webservice是一种基于SOAP传输协议,用WSDL描述,用XML封装数据的接口技术。
由于其跨平台、跨防火墙、开发成本低、开发周期短等优势而被广泛应用,但也有局限性,包括传输负载大、没有统一的实现模型等。
对于Webservice在SAP中的应用,多被用在系统同步要求高,数据传输负载小的接口开发上。
下面以SAP系统和外部系统的交互为例,SAP ECC系统两个、外部系统一个(Java EJB3 Jboss5),分别讲述从SAP到SAP,SAP到Java,Java到Java,Java到SAP的Webservice实例。
一、SAP系统间的Webservice调用SE37创建函数z_calculate,类型要设置为RFC类型,参数都设置为传值:function z_calculate.*"----------------------------------------------------------------------*"*"Local interface:*" IMPORTING*" VALUE(NUMBER1) TYPE STRING*" VALUE(NUMBER2) TYPE STRING*" VALUE(OPERATOR) TYPE STRING*" EXPORTING*" VALUE(RESULT) TYPE STRING*"----------------------------------------------------------------------try .case operator.when '+'.result = number1 + number2.when '-'.result = number1 - number2.when '*'.result = number1 * number2.when '/'.result = number1 / number2.when others.result = 'Not supported!'.endcase.catch cx_root.result = 'Not supported!'.endtry.condense result.endfunction.把函数发布成Webservice其他一路下来默认,完成后服务已经创建;接下来到SOAMANAGER中去找WSDL的URL,进入到Web service Administration界面,Apply selection => Overview => Displayselected Binding's WSDL URL,在右边可以看到了。
使用Eclipse构建Maven的Web项目用jetty启动
一、直接建立Maven项目方法1,建立Maven项目接下来使用Eclipse的maven构建一个web项目,以构建SpringMVC项目为例:1.1 选择建立Maven Project选择File -> New -> Other,在New窗口中选择Maven -> Maven Project。
点击newxt。
1.2 选择项目路径Use default Workspace location默认工作空间。
1.3 选择项目类型在Artifact Id中选择maven-archetype-webapp1.4 输入Group ID和 Artifact ID,以及PackageGroup ID一般写大项目名称。
Artifact ID是子项目名称。
例如Spring的web包,Group ID:org.springframework,artifactId:spring-web。
Package是默认给你建一个包,不写也可以。
1.5 刚建立好后的文件结构如下图如果这里显示的内容多,一般是Filters设置的问题。
或perspective为JavaEE模式,改成Java模式就可以了。
2,配置项目接下来就需要更改好多配置了。
2.1 添加Source文件夹接下来需要添加src/main/java,src/test/java ,src/test/resources三个文件夹。
右键项目根目录点击New -> Source Folder,建出这三个文件夹。
注意不是建普通的Folder,而是Source Folder。
2.2 更改class路径右键项目,Java Build Path -> Source下面应该有4个文件夹。
src/main/java,src/main /resources,src/test/java ,src/test/resources。
双击每个文件夹的Output folder,选择路径。
eclipse创建webservice的两种方法
在eclipse 中创建webservice项目方法一:使用xfire支持1.创建Dynamic Web Project 项目:2.将编译路径改为项目/web-INF/classes;3.将META-INF 文件夹移动到src下面,并在META-INF 中创建xfire文件夹,文件夹内放入services.xml文件;4.添加xfire支持的jar包:5.编写web.xml:7.编写services.xml可以存在多个service;8.访问http://localhost:port/projectName/services/url-pattern?wsdl(蓝色字体均为相应的内容);方法二:使用Axis2支持1.1Axis2发行包Axis2以多个发行包发行。
你需要哪个视你所需决定。
1.1.1标准二进制发行包如果你正在开发服务和应用程序,你需要Axis2标准二进制发行包。
这个发行包包括所有必要的*.jar文件,以及很多便于开发用的脚本。
它具有以下结构。
Axis2标准二进制发行包目录的结构binaxis2.bataxis2.shaxis2server.bataxis2server.shjava2wsdl.batjava2wsdl.shwsdl2java.batwsdl2java.shsetenv.shlibactivation-1.1.jar...XmlSchema.jarrepositorymodulesmodules.listaddressing-1.1.mar...servicesservices.listversion.aar...samples...webapp...confaxis2.xmlLICENSE.txtREADME.txtNOTICE.txtINSTALL.txtrelease-notes.htmlbin目录包括一些有用的脚本。
它们包括axis2.bat(或者axis2.sh),这个文件可以让你在不手工添加Axis2 jar文件到类路径的情况下方便的执行Java命令;java2wsdl.bat(和.sh)和wsdl2java.bat(和.sh),它可以让你轻易的从一个WSDL文件生成Java代码,反之亦然;axis2server.bat(和sh),一个简易Web服务器,它可以让你早自己的应用程序中搭建Axis2的功能来发送接收消息。
金蝶EAS_V7.5_WebService开发指南
Webservice开发指南BOSWebService1.1.BOSWebService原理 (3)1.2.发布WebService的约束 (4)1.3.BOSWebService发布 (4)1.3.1.发布流程 (4)1.3.2.发布WebService (4)1.3.3.编辑WebService配置文件 (5)1.4.BOSWebService部署 (6)1.4.1.建立web工程.................................... 错误!未定义书签。
1.4.2.部署发布文件 (6)1.4.3.测试是否正确 (7)1.4.4.Web工程目录及文件截图 (7)1.5.客户端代码 (8)1.5.1.获取wsdl服务描述文件 (8)1.5.2.下载工具 (9)1.5.3.建立一个新工程 (9)1.5.4.使用java客户端 (12)1.5.5.importVoucher(凭证引入 (13)1.6.BOS webservice 安全性 (14)1.6.1.BOS webservice 安全性概述 (14)1.6.2.不启用安全性 (14)1.6.3.启用安全性 (14)1.6.4.如何安全性启用 (15)1.7.EASLogin 登陆webservice 说明 (15)1.7.1.EASLogin 接口说明 (15)1.7.2.EASLogin 异常说明 (16)1.7.3.EASLogin 和前面版本的差别 (17)1.8.webservice 异常查看 (17)2.WebService 客户端开发指南 (18)2.1.前提条件 (18)2.2.获取WSDL文件 (18)2.3.生成客户端 (19)2.3.1.生成Java客户端 (19)2.3.2.建立一个新工程 (19)2.3.3.将获取到的WSDL文件拷贝到工程的根目录下: (20)2.3.4.生成客户端 (20)2.4.使用java客户端 (24)2.5.生成C# 客户端 (24)2.5.1.使用命令行 (24)2.5.2.运行命令生成客户端 (25)2.5.3.使用客户端代码 (26)3.webservice FAQ (28)3.1.在EAS 上如何发布一个webservice ? (28)3.2.如何调用一个 webservice? (28)3.3.有哪些工具能够简单的测试 webservice? (28)3.4.EASLogin 服务登陆如何判断失败 (28)3.5.调用webservice时报 com.kingdee.bos.IllegalSessionStateException: Pleaselogin first 异常? (28)3.6.EAS6.0调用webservice时报没有 WSConfig.getSrvURL() 方法。
Java编写WebService实例
利用Java编写简单的WebService实例使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService。
下面是一个从编写测试例子到发布WebService,以及编写测试代码的过程介绍。
本例子的WebService提供了两个方法,分别是sayHello和sayHelloToPerson,第一个只是返回一个"Hello"字符串,没有参数,第二个函数接受一个字符串作为参数,返回"Hello 参数值",该例子比较简单,但是清楚的说明了从编写代码到发布为WebService以及测试编写好的WebService全过程。
编写服务代码服务代码提供了两个函数,分别为sayHello和sayHelloToPerson,源代码如下:/** File name: HelloService.java** Version: v1.0** Created on Aug 2, 2008 9:40:20 AM** Designed by Stephen** (c)Copyright 2008*/package com.sinosoft.webservice;/*** @author Stephen** Test web service*/public class HelloService {/*** 不带参数的函数** @return返回Hello字符串*/public String sayHello() {return "Hello";}/*** 带参数的函数** @param name* 名称* @return返回加上名称的欢迎词*/public String sayHelloToPerson(String name) {if (name == null || name.equals("")) {name = "nobody";}return "Hello " + name;}}发布WebService要将上边写的HelloService类发布为WebService,需要先搭建Web应用。
webservice 接口写法 java
webservice 接口写法java全文共四篇示例,供读者参考第一篇示例:WebService是一种基于Web的服务架构,用于使不同的应用程序通过网络进行通信。
在Java中,编写WebService接口是一个很常见的需求,本文将介绍WebService接口的写法以及一些常见的技巧。
一、WebService接口的定义在Java中,可以使用JAX-WS(Java API for XML Web Services)来定义WebService接口。
通过JAX-WS,可以很方便地将Java类转换为Web服务,并使用SOAP(Simple Object Access Protocol)进行通信。
需要在Java类上添加@WebService注解,以标识这个类是一个WebService接口。
接着,需要在方法上添加@WebMethod注解,以标识这个方法是一个WebService操作。
```@WebServicepublic class HelloWorld {@WebMethodpublic String sayHello(String name) {return "Hello, " + name + "!";}}```上面的例子定义了一个简单的WebService接口,包含一个sayHello方法用于返回打招呼的字符串。
要发布一个WebService接口,需要使用Endpoint类来绑定WebService接口的实现类,并指定WebService的访问地址。
上面的例子使用Endpoint.publish方法发布了HelloWorld这个WebService接口,并指定了访问地址为http://localhost:8080/helloWorld。
要调用一个已发布的WebService接口,可以使用JAX-WS提供的工具来生成客户端代码。
生成客户端代码后,就可以像调用本地方法一样调用WebService方法。
详解java开发webservice的几种方式
详解java开发webservice的⼏种⽅式webservice的应⽤已经越来越⼴泛了,下⾯介绍⼏种在Java体系中开发webservice的⽅式,相当于做个记录。
1.Axis2Axis是apache下⼀个开源的webservice开发组件,出现的算是⽐较早了,也⽐较成熟。
这⾥主要介绍Axis+eclipse开发webservice,当然不⽤eclipse也可以开发和发布webservice,只是⽤eclipse会⽐较⽅便。
(3)下载eclipse的axis2插件(4)eclipse安装axis2插件1)在任意⽬录下新建⼀个Axis2⽂件夹,在该⽂件夹下新建eclipse⽬录,在eclipse⽬录中新建plugins⽬录和features⽬录,例如:D:\programSoftware\eclipse-SVN\Axis2\eclipse;2)把下载的axis2插件解压,并把解压的⽂件放到新建的eclipse的plugins⽬录下;3)在%eclipse_home%的⽬录下新建links⽬录,并在links⽬录下新建axis2.link⽂件,内容为:path=D:\programSoftware\eclipse-SVN\Axis2;4)重启eclipse,点击·file-new-other,如果看到Axis2 Wizards,则表明插件安装成功。
(5)安装axis2(6)使⽤eclipse新建web⼯程,创建⼀个普通java类,⾄少包含⼀个⽅法。
(7)发布webservice1)点击eclipse的File-New-other,打开Axis2 Wizards,选择Axis2 Service Archiver,然后Next;2)选择Class File Location,也就是类⽂件存放路径,注意:只选到classes⽬录,不要包括包⽂件夹,然后Next;3)选择Skip WSDL,然后Next4)⼀路Next到Select the Service XML file to be included in the Service archive,勾选Generate theservice xml automatically;5)Service Name-填写你的service名称,Class Name-填写类名称,要包括包名,然后点击load,然后点击Finish,这时webservice就发布成功了;6)然后到%TOMCAT_HOME%/webapps/axis2/WEB-INF/services 看看是否多了⼀个.aar的⽂件;2.Apche CXFCXF开发webservice也是⽐较⽅便和简单的,它和spring的集成可以说是⾮常地好。
eclipse web项目案例
一、项目简介我们将以一个实际的eclipse web项目为例,来展示一个完整的web开发流程。
该项目是一个上线个人博客系统,用户可以注册、登入,发布文章、编辑文章、删除文章,浏览他人的文章等功能。
项目使用Java语言编写,采用Spring MVC + Hibernate框架,数据库采用MySQL,前端页面使用HTML、CSS和JavaScript。
二、需求分析1. 用户注册:用户可以通过电流新箱注册账号,注册时需要填写用户名、密码、电流新箱等基本信息。
2. 用户登入:注册后的用户可以使用用户名和密码登入账号。
3. 文章发布:用户可以发布新的博客文章,发布时需要填写文章标题、内容等信息。
4. 文章编辑:用户可以编辑已发布的文章。
5. 文章删除:用户可以删除已发布的文章。
6. 文章浏览:非登入用户可以浏览其他用户发布的文章。
三、技术选型1. 服务器端:Tomcat2. 后端框架:Spring MVC3. ORM框架:Hibernate4. 前端框架:Bootstrap5. 数据库:MySQL6. 开发工具:Eclipse四、项目架构1. 创建Maven项目:在Eclipse中创建一个Maven项目作为基础框架。
2. 配置基础环境:添加Spring MVC、Hibernate等依赖,配置web.xml和Spring配置文件。
3. 创建数据库:在MySQL中创建相应的数据库和表。
4. 编写实体类:根据数据库表的结构编写对应的实体类,并添加相应的注解。
5. 编写DAO层:创建数据访问对象接口和实现类,完成对数据库的增删改查操作。
6. 编写Service层:创建业务逻辑接口和实现类,对DAO层的操作进行封装处理。
7. 编写Controller层:创建控制器类,处理前端请求,并调用Service层完成相应的业务逻辑。
8. 编写前端页面:使用HTML、CSS和JavaScript编写前端页面,包括注册、登入、发布文章、编辑文章等功能页面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.创建服务端工程WSServer(web工程)2.创建服务的类与方法package com.shi.service;/*** 服务类* @author shijianhang**/public class WSTest {/*** 服务方法* @param name* @return*/public String sayHello(String name) { return"Hello, " + name;}}3.发布服务使用eclipse的工具来发布服务配置发布的服务1 要发布的类2 使用的服务器3 使用的soap框架4.测试服务查看服务的目录调用服务方法http://localhost:6089/WSServer/services/WSTest?method=sayHello&arg0=shi WSTest 服务类sayHello服务方法arg0=shi 方法参数输出:Hello,shi5.下载wsdl文件(服务定义文件)保存打开的文件WSTest.wsdl<?xml version="1.0"encoding="UTF-8"?><wsdl:definitions targetNamespace=""xmlns:apachesoap="/xml-soap"xmlns:impl=""xmlns:intf=""xmlns:wsdl="/wsdl/"xmlns:wsdlsoap="/wsdl/soap/"xmlns:xsd="/2001/XMLSchema"><!--WSDL created by Apache Axis version: 1.4Built on Apr 22, 2006 (06:55:48 PDT)--><wsdl:types><schema elementFormDefault="qualified"targetNamespace=""xmlns="/2001/XMLSchema"><element name="sayHello"><complexType><sequence><element name="name"type="xsd:string"/></sequence></complexType></element><element name="sayHelloResponse"><complexType><sequence><element name="sayHelloReturn"type="xsd:string"/></sequence></complexType></element></schema></wsdl:types><wsdl:message name="sayHelloRequest"><wsdl:part element="impl:sayHello"name="parameters"/> </wsdl:message><wsdl:message name="sayHelloResponse"><wsdl:part element="impl:sayHelloResponse"name="parameters"/> </wsdl:message><wsdl:portType name="WSTest"><wsdl:operation name="sayHello"><wsdl:input message="impl:sayHelloRequest"name="sayHelloRequest"/><wsdl:output message="impl:sayHelloResponse"name="sayHelloResponse"/></wsdl:operation></wsdl:portType><wsdl:binding name="WSTestSoapBinding"type="impl:WSTest"><wsdlsoap:binding style="document"transport="/soap/http"/><wsdl:operation name="sayHello"><wsdlsoap:operation soapAction=""/><wsdl:input name="sayHelloRequest"><wsdlsoap:body use="literal"/></wsdl:input><wsdl:output name="sayHelloResponse"><wsdlsoap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="WSTestService"><wsdl:port binding="impl:WSTestSoapBinding"name="WSTest"> <wsdlsoap:addresslocation="http://localhost:6089/WSServer/services/WSTest"/></wsdl:port></wsdl:service></wsdl:definitions>当然,你也可以直接到web目录下找到wsdl子目录,获得相关的wsdl文件6.利用wsdl文件生成服务接口类利用WSDL_TO_JA V A转换.bat(将wsdl文件转换成java类的批处理程序)set java_home=C:\Program Files\Java\jdk1.5.0_09set path=%java_home%\bin;%path%set AXIS_HOME=D:\workspace2\WSServer\WebContent\WEB-INFset AXIS_LIB=%AXIS_HOME%/libsetAXISCLASSPATH=%AXIS_LIB%/axis.jar;%AXIS_LIB%/commons-discovery-0.2.jar;%AXIS_ LIB%/commons-logging.jar;%AXIS_LIB%/jaxrpc.jar;%AXIS_LIB%/saaj.jar;%AXIS_LIB%/ws dl4j.jar;java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java -o 生成调用文件WSTest.wsdlpausejava_home jdk目录AXIS_HOME + AXIS_LIB 定位axis的jar包生成调用文件是一个目录,保存转换后的java文件WSTest.wsdl 要转换的wsdl文件下面是生成的java文件列表7.创建客户端工程WSClient(普通工程)1将生成的java文件复制到工程目录下2 添加jar包8.调用服务import .URL;import java.rmi.RemoteException;import javax.xml.rpc.ServiceException;import com.shi.service.WSTest;import com.shi.service.WSTestService;import com.shi.service.WSTestServiceLocator;public class Test {/*** 调用webservice* @param args*/public static void main(String[] args) {t ry {WSTestService service = new WSTestServiceLocator();//调用localhost的服务WSTest wstest0 = service.getWSTest();System.out.println(wstest0.sayHello("shi"));//调用其他路径的服务URL portAddress = newURL("http://127.0.0.1:6089/WSServer/services/WSTest");WSTest wstest1 = service.getWSTest(portAddress);System.out.println(wstest1.sayHello("shi"));} catch (Exception e) {e.printStackTrace();}}}。