webservice

在java项目中使用webservice
今天学习webservice,主要参考了网络上的一些文章。

1.关于原理的介绍:个人认为这篇文章写得不错了,戳这里。

2.关于demo的编写:个人认为这篇文章很简洁,也能运行成功,戳这里。

按照上面那篇文章的demo运行成功以后,我想在java web中加入一个webservice服务,供其他的java web项目调用。

1.首先,在项目中添加com.xdx.webservice包,如图所示。

2.在其中加入WetherServiceInter接口和其实现类WeatherService类。代码如下。

复制代码
package com.xdx.webservice;

import javax.jws.WebMethod;
import javax.jws.WebService;

import com.xdx.entity.TAdmin;

@WebService
public interface WeatherServiceInter {
@WebMethod
public String getWeatherByCityname(String name);
public TAdmin getAdminById(int adminId);

}
复制代码
复制代码
package com.xdx.webservice;

import javax.jws.WebService;

import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;

import com.xdx.entity.TAdmin;
import com.xdx.service.AdminService;

@WebService
public class WeatherService implements WeatherServiceInter {

public String getWeatherByCityname(String name) {
    System.out.println(name+"天气晴朗");
    return name+"天气晴朗";
}
public TAdmin getAdminById(int adminId){
    WebApplicationContext webApplicationContext = ContextLoader
            .getCurrentWebApplicationContext();
    AdminService adminService=(AdminService) webApplicationContext.getBean("adminService");
    TAdmin admin = adminService.getAdminById(adminId);
    return admin;
}

}
复制代码
3.发布webservice服务,这边我们在web项目启动的时候发布webservice服务,建立一个filter,在filter中写入如下代码,负责启动websocket(之前的demo)和webservice。这边我们选用8085端口作为webservice的端口。

复制代码
package com.xdx.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.xml.ws.Endpoint;

import org.java_websocket.WebSocketImpl;

import com.xdx.webservice.WeatherService;
import com.xdx.websocket.WsServer;

public class StartFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest arg0, ServletResponse arg1,
        FilterChain arg2) throws IOException, ServletException {

}

public void init(FilterConfig arg0) throws ServletException {
    this.startWebsocketInstantMsg();
}

/**
 * 启动即时聊天服务
 */
public void startWebsocketInstantMsg() {
    WebSocketImpl.DEBUG = false;
    WsServer s;
    s = new WsServer(8887);
    s.start();
    System.err.println("websocket启动了");
    //启动webservice
    Endpoint.publish("http://localhost:8085/ws_server/weather", new WeatherService());
    System.out.println("webservice启动了");
}

}
复制代码
4.在web.xml中配置filter,配置如下。

<!-- filter -->
<filter>
    <filter-name>startFilter</filter-name>
    <filter-class>com.xdx.filter.StartFilter</filter-class>
</filter>

5.运行项目,在浏览器输入http://localhost:8085/ws_server/weather?wsdl 测试一下,会出现如下的xml文件。

说明已经发布成功了。

6.接下来我们在另外一个web项目(名为m_gecko)中来调用该webservice服务里面的方法。首先,通过cmd进入m_gecko项目的src/main/java目录下,如图所示,输入wsimport -keep http://localhost:8085/ws_server/weather?wsdl

出现上述提示,说明已经在m_gecko项目中生成了webservice的客户端代码,我们刷新一下m_gecko项目看看。果然是的。

7.在m_gecko项目中我们来写调用webservice服务的方法。首先我们来调用getWeatherByCityname方法。

复制代码
@ResponseBody
@RequestMapping(value=“webserviceDemo1”, produces = “text/html; charset=utf-8”)
public String webserviceDemo1(){
WeatherServiceService factory=new WeatherServiceService();
WeatherService service=factory.getWeatherServicePort();
String result=service.getWeatherByCityname(“厦门”);
return result;
}
复制代码
运行m_gecko项目(同时也要运行webservice服务所在的项目warrior项目),在浏览器中输入http://localhost:8080/m_gecko/webserviceDemo1。

然后再来调用getAdminById方法。

复制代码
@ResponseBody
@RequestMapping(value=“webserviceDemo2”)
public TAdmin webserviceDemo2(){
WeatherServiceService factory=new WeatherServiceService();
WeatherService service=factory.getWeatherServicePort();
TAdmin admin=service.getAdminById(5);
return admin;
}
复制代码
效果如下

分类: webservice

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值