项目搭一个webservice

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



    cxf 
    org.apache.cxf.transport.servlet.CXFServlet
    1


    cxf
    /xinbo_hip/bm_Services/*
 
  

    contextConfigLocation
    /WEB-INF/dorado-home/webService.xml

2.maven的pom文件中加入:


    org.apache.cxf
	cxf-rt-frontend-jaxws
	2.5.1
	
	    
		    jaxb-impl
			com.sun.xml.bind
		
	


	com.sun.xml.bind
	jaxb-xjc
	2.1

3.配置文件中webService.xml:



   
    
    

    
 
     
     
    

    
    
        
            
        
        
            
        
        
            
        
      

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 map = null;
		try{
			map = gson.fromJson(paramJson, new TypeToken>() {}.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测试接口。

在摸索中前进。。。。。

 

你可能感兴趣的:(代码积累)