项目搭一个webservice

1.在web.xml文件中加入这段代码:

<!-- webservice服务配置 -->
<servlet>
    <servlet-name>cxf</servlet-name> 
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>cxf</servlet-name>
    <url-pattern>/xinbo_hip/bm_Services/*</url-pattern>
</servlet-mapping> 
  
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/dorado-home/webService.xml</param-value>
</context-param>
<!-- webservice服务配置 -->

2.maven的pom文件中加入:

<dependency>
    <groupId>org.apache.cxf</groupId>
	<artifactId>cxf-rt-frontend-jaxws</artifactId>
	<version>2.5.1</version>
	<exclusions>
	    <exclusion>
		    <artifactId>jaxb-impl</artifactId>
			<groupId>com.sun.xml.bind</groupId>
		</exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>com.sun.xml.bind</groupId>
	<artifactId>jaxb-xjc</artifactId>
	<version>2.1</version>
</dependency>

3.配置文件中webService.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd">
   <import resource="classpath:META-INF/cxf/cxf.xml"/>
   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> 
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> 

    <bean id="dataWebServiceProvider" class="com.xinbo.ws.Impl.DataWebServiceProviderImpl"/>
 
     <bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
     
    <bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
<!--     注意下面的address,这里的address的名称就是访问的WebService的name -->
    
    <jaxws:server id="iDataWebServiceProvider" serviceClass="com.xinbo.ws.IDataWebServiceProvider" address="/wsDataServiceProvider">
        <jaxws:serviceBean>
            <ref bean="dataWebServiceProvider"/>
        </jaxws:serviceBean>
        <jaxws:inInterceptors>
            <ref bean="inMessageInterceptor"/>
        </jaxws:inInterceptors>
        <jaxws:outInterceptors>
            <ref bean="outLoggingInterceptor"/>
        </jaxws:outInterceptors>
    </jaxws:server>  
</beans>

jaxws:server   个人理解就是在配置文件中实例化一个JaxWsServerFactoryBean对象。这个类是发布服务的作用。上面的配置意思相当于:

public static void main(String[] args) {
    JaxWsServerFactoryBean jsfb = new JaxWsServerFactoryBean();
    //1.服务提供者实现的接口
    jsfb.setServiceClass(IDataWebServiceProvider.class);
    //2.指定访问路径
    jsfb.setAddress("http://localhost:8083/xinbo_hip/bm_Services/wsDataServiceProvider");
    //3.指定服务实现类
    jsfb.setServiceBean(new DataWebServiceProviderImpl());
    jsfb.getInInterceptors().add(new LoggingInInterceptor());
    jsfb.getOutInterceptors().add(new LoggingOutInterceptor());
    //4.发布
    jsfb.create();
    System.out.println("发布成功...");
}

4.load-on-startup什么意思?

  1. load-on-startup 元素标记容器是否应该在web应用程序启动的时候就加载这个servlet,(实例化并调用其init()方法)。
  2. 它的值必须是一个整数,表示servlet被加载的先后顺序。
  3. 如果该元素的值为负数或者没有设置,则容器会当Servlet被请求时再加载。
  4. 如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的优先级越高,就越先被加载。值相同时,容器就会自己选择顺序来加载。

5.@WebParam(name="request")作用?

接口在被编译为class文件的时候不能保存参数名 ,所以需要这个标签保留名字,自己在开发中吃过这个亏,记录一下,不要再犯了。所以如果没有加注解,参数将被命名为arg0。

6.webservice接口

@WebService(targetNamespace="http://ws.xinbo.com/",name = "dataWebServiceProvider", serviceName = "DataWebServiceProvider")
public interface IDataWebServiceProvider {
    @WebResult(name="return",targetNamespace="http://ws.xinbo.com/")   
    @WebMethod
    public String refund(@WebParam(name="request") String request);
    @WebMethod
	public String getMedicationRecord(@WebParam(name="request") String request);
    @WebMethod
	public String sendWxMsg(@WebParam String code, @WebParam String paramJson);
}

7.webservice实现类

@Component
public class DataWebServiceProviderImpl implements IDataWebServiceProvider{
   
    /**
     * 发送消息
     */

    @Override
    public String getMedicationRecord(String request) {
       String result="调用失败";
    	MobileSyshealthOrgInfo mobileSyshealthOrgInfo=systemService.getMbInfo("400686566");
		if(mobileSyshealthOrgInfo!=null)		{
			RequestBean requestBean=new RequestBean();
		    requestBean.setAddress(mobileSyshealthOrgInfo.getWsurl());
			requestBean.setId("getMedicationRecord");
			requestBean.setXml(request);
			ResponseBean responseBean = SendConnect.sendXmlMethod(requestBean);
			result=responseBean.getResult();
		}
    	
       	
       return result;
       
    }


	@Override
	public String sendWxMsg(String code, String paramJson) {
		Gson gson = new Gson();
		Map<String, Object> map = null;
		try{
			map = gson.fromJson(paramJson, new TypeToken<Map<String, Object>>() {}.getType());
		}catch(Exception e){
			return "参数解析失败";
		}
		String content = StringUtil.parseString(map.get("content"));
		String Id_No = StringUtil.parseString(map.get("Id_No"));
		TPatientUser user = mobileDbService.getTPatientUserByParams(null,null,Id_No,null);
		if(user==null){
			return "根据身份证号查无此人";
		}
		WxMpKefuMessage message=new WxMpKefuMessage();
		message.setMsgType(WxConsts.KefuMsgType.TEXT);
		message.setContent(content);
		message.setToUser(user.getWxId());
		wxMpService.setWxMpConfigStorage(WeiXinMpInit.defaultStorage);
		try {
			wxMpService.getKefuService().sendKefuMessage(message);
		} catch (WxErrorException e) {
			return "微信错误代码:"+e.getError().getErrorCode()+";微信错误描述:"+e.getError().getErrorMsg();
		}
		return "发送成功";
	}
    
}

8.用soupUI测试接口。

在摸索中前进。。。。。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值