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="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/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="http://xfire.codehaus.org/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 java.net.MalformedURLException;
import java.net.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对象 类型的信息 获取户信息接口
     */
    @Override
    public 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="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/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>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.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 http://maven.apache.org/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的操作访问。

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值