700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > idea使用xfire方式发布webservice教程

idea使用xfire方式发布webservice教程

时间:2019-03-17 21:49:28

相关推荐

idea使用xfire方式发布webservice教程

近日在熟悉webservice发布的过程,此处主要讲解xfire方式。

1.使用idea新建一个web项目

步骤1:

按照图中的指定序号建立对应的web项目即可。

步骤2:

填写组织ID和具体项目id,点击进行“下一步”即可。

步骤3:

设置相关参数,例如maven所在的位置,可以选择idea集成的或者选择自己下载使用的,下方参数的地方根据需要进行设置,点击“下一步”即可,最后一次点击完成即可。

2.建立项目后,如果前面的参数未设置,需要进行单独的设置,例如生成的项目为:

即圈里面的内容没有相应的目录,哪么在项目结构设置即可。

在上述地方建立java和resources目录,同时需要将其进行标注,右键新建的文件夹,Java标注为“源码”,resources标注为“资源”,这样做的目的,在编译打包后的输出目录中,java和resources目录下的内容能够建立指定格式的文件,同时打包输出的内容会全部集成到classes文件夹下(避免后续发布webservices找不到对应的services.xml文件)

3.接下来配置web.xml文件,参考为:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- webservices 接口 XFire 需要引入的 Servlet Start --><servlet><servlet-name>XFireServlet</servlet-name><servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class></servlet><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping><!-- 区配前缀 End --><!-- webservices 接口 XFire 需要引入的 Servlet End --></web-app>

4.services.xml配置参考:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/config/1.0"><service><!--1. 暴露的服务名2. 自定义命名空间3. 接口路径4. 接口实现类路径 --><name>test</name><namespace>CustomNamespaces</namespace><serviceClass>com.gblfy.xfire.service.HelloService</serviceClass><implementationClass>com.gblfy.xfire.service.impl.HelloServiceImpl</implementationClass></service></beans>

其中,<name>test</name>代表发布后的服务名,namespace代表发布后的webservices中的targetNamespace的值,上方的xmlns记得配置。

此文件的目录应该为:

其中“META-INF.xfire”代表“META-INF\xfire",由于是资源文件目录,因此被呈现为“META-INF.xfire”的形式。

5.对应的发布的类文件及客户端测试文件,可以参照下方的操作:

WSXfireClient.java

package com.gblfy.xfire.service.client;import org.codehaus.xfire.client.Client;import .MalformedURLException;import .URL;public class WSXfireClient {public static void main(String[] args) {helloWorld();}public static void helloWorld(){try {System.out.println("================================helloWorld()========================");URL url = new URL("http://localhost:8080/services/test?wsdl");Client client = new Client(url);Object[] results = new Object[0];results = client.invoke("getUser",new Object[]{"好的"});System.out.println(results[0]);} catch (MalformedURLException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}

HelloServiceImpl.java

package com.gblfy.xfire.service.impl;import com.gblfy.xfire.service.HelloService;public class HelloServiceImpl implements HelloService {/*** 测试传递User对象 类型的信息 获取户信息接口*/@Overridepublic String getUser(String jsonUser) {//log.info("接收的到 纽约 发送的报文 {}", jsonUser);System.out.print("测试");return "测试成功";}}

User.java

package com.gblfy.xfire.service.model;import java.io.Serializable;public class User implements Serializable {private Long id;private String name;private Integer age;private String email;public User(Long id, String name, Integer age, String email) {this.id = id;this.name = name;this.age = age;this.email = email;}public User() {}}

HelloService.java

package com.gblfy.xfire.service;public interface HelloService {/*** 测试传递json类型 的User对象 类型的信息 获取户信息接口** @param jsonUser* @return*/public String getUser(String jsonUser);}

6.此处需要在maven的依赖里添加

</properties><xfire-all.version>1.2.6</xfire-all.version></properties><dependency><groupId>org.codehaus.xfire</groupId><artifactId>xfire-all</artifactId><version>${xfire-all.version}</version></dependency>

参照下方的:

<?xml version="1.0" encoding="UTF-8"?><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>webservicetest</groupId><artifactId>webservicetest</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>webservicetest Maven Webapp</name><!-- FIXME change it to the project's website --><url></url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>1.7</piler.source><piler.target>1.7</piler.target><xfire-all.version>1.2.6</xfire-all.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.codehaus.xfire</groupId><artifactId>xfire-all</artifactId><version>${xfire-all.version}</version></dependency></dependencies><build><finalName>webservicetest</finalName><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see /ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></pluginManagement></build></project>

添加后刷新下依赖,如图:

按照上述的0,1,2刷新,在序号2处查看依赖是否引入等。

7.现在所有都处理好后,进行服务的启动,配置如下:

点击右上角的序号0处,选择编辑配置,进入上述配置页面;

点击序号1的加号,找到tomcat server(随便一个Tomcat server即可,选择本地),然后按照序号2的方式配置即可,配置完成后,需要将刚刚的项目添加进去,一般下方都提示你操作,按照下述方式添加也可:

点击上图中的”+“号,此时选择”artifact"选择类似上图中的格式即可,此时下方的圈中的内容添加完毕即可。(备注:上图中application context内容可以配置项目访问时的目录,默认就是直接是“/",可以根据自己需要配置)。

8.由于上述配置时,已经默认启动服务前需要执行构建,因此不需要单独执行maven下的install选项,直接在右上角运行出,选择刚刚建立的tomcat服务的名称,运行即可。

9.运行后使用链接(参考):

http://localhost:8080/services/test?wsdl

/services/:为web.xml中url模式匹配的地方的内容,test为services.xml中的<name>test</name>中的内容.然后访问即可出现wsdl,如下(参考):

到此结束,此时可以运行WSXfireClient类中的代码,因为wsdl已经发布,同时服务在启动中,可以直接运行即可执行webservice的操作访问。

备注:部分内容都是参考网上其他前辈的内容,根据自己的需要进行搭建设计即可。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。