jFinal + JAX-WS 实现Webservice

一、添加依赖包

<dependency>
	<groupId>com.sun.xml.ws</groupId>
	<artifactId>jaxws-rt</artifactId>
	<version>2.2.8</version>
</dependency>
<dependency>
	<groupId>com.sun.xml.bind</groupId>
	<artifactId>jaxb-core</artifactId>
	<version>2.2.7</version>
</dependency>
<dependency>
	<groupId>com.sun.xml.stream.buffer</groupId>
	<artifactId>streambuffer</artifactId>
	<version>1.5.3</version>
</dependency>
<dependency>
	<groupId>com.sun.xml.bind</groupId>
	<artifactId>jaxb-impl</artifactId>
	<version>2.2.7</version>
</dependency>
<dependency>
	<groupId>com.sun.xml.ws</groupId>
	<artifactId>policy</artifactId>
	<version>2.3.1</version>
</dependency>
<dependency>
	<groupId>org.glassfish.gmbal</groupId>
	<artifactId>gmbal-api-only</artifactId>
	<version>3.2.0-b003</version>
</dependency>
<dependency>
	<groupId>org.glassfish.ha</groupId>
	<artifactId>ha-api</artifactId>
	<version>3.1.9</version>
</dependency>
<dependency>
	<groupId>javax.annotation</groupId>
	<artifactId>javax.annotation-api</artifactId>
	<version>1.3.1</version>
</dependency>


二、在启动入口中配置servlet,启动web服务并添加servlet相关配置

	/**
	 * 启动入口,运行此 main 方法可以启动项目,此 main 方法可以放置在任意的 Class 类定义中,不一定要放于此
	 */
	public static void main(String[] args) {
	    //启动web服务
	    UndertowServer.create(DdyApplication.class)
	        .configWeb(builder - > {
	            // 配置 Servlet
	            builder.addServlet("testWebservice", "com.sun.xml.ws.transport.http.servlet.WSServlet");
	            builder.addServletMapping("testWebservice", "/services/*");
	            builder.setServletLoadOnStartup("testWebservice", 1); //配置启动加载
	            // 配置 Listener
	            builder.addListener("com.sun.xml.ws.transport.http.servlet.WSServletContextListener");
	        }).start();
	}


三、编写Webservice类

package com.ddy.webservice;

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

@WebService
public class TestWebservice {
	public String sendMsg(@WebParam(name = "Name") String name) {
		System.out.println("name:==============="+name);
		return "send msg to " + name ;
	}
}


四、配置sun-jaxws.xml

在WEB-INF目录下添加 sun-jaxws.xml文件,配置endpoint,可以配置多个

<?xml version="1.0" encoding="UTF-8"?>
<endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
    <endpoint implementation="com.ddy.webservice.TestWebservice" name="wsTest" url-pattern="/services/TestWebservice"/>
</endpoints>


五、配置启动类,跳过Webservice相关路由

public void configHandler(Handlers me) {
    me.add(new UrlSkipHandler(".*/services.*",false));
}


六、启动项目

控制台打印以下日志,说明servlet添加成功

九月 30, 2022 5:34:19 下午 com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized
信息: WSSERVLET12: JAX-WS 上下文监听程序正在初始化
九月 30, 2022 5:34:21 下午 com.sun.xml.ws.transport.http.servlet.WSServletDelegate <init>
信息: WSSERVLET14: JAX-WS servlet 正在初始化


七、访问

地址栏输入:http://localhost:18080/services/TestWebservice?wsdl  能正常打开wsdl,Webservice发布成功!

webservice.png

评论区

山东小木

2022-10-01 10:30

收藏

chcode

2022-10-09 15:12

jdk 自带webservice支持(简单够用)还引这一堆包

热门分享

扫码入社