zoukankan      html  css  js  c++  java
  • 发布webservice服务

    1,定义一个接口

    public interface HaiService {
    //定义一个方法
    	String speak(String str);
    }
    

    2,编写一个实现类

    import javax.jws.WebService;
    
    import com.lxinet.jeesns.test.ws.HaiService;
    //这里要用WebService 注解
    @WebService
    public class HaiServiceImpl implements HaiService {
    
    	@Override
    	public String speak(String str) {
    		System.out.println("来到服务端了。。。。。"+str);
    		return "hai pong";
    	}
    
    }
    

    3,发布服务

    import javax.xml.ws.Endpoint;
    
    import com.lxinet.jeesns.test.ws.HaiService;
    import com.lxinet.jeesns.test.ws.impl.HaiServiceImpl;
    
    public class ClientTest {
    	
    	public static void main(String[] args) {
    		HaiService ws=new HaiServiceImpl();
    		Endpoint.publish("http://192.168.43.119:8083/ws", ws);
    		System.out.println("服务发布成功。。。");
    		
    	}
    
    }
    

    4,通过浏览器访问

    http://192.168.43.119:8083/ws?wsdl

    5,通过代码访问

    在dos窗口 输入 :wsimport -s D:html http://192.168.43.119:8083/ws?wsdl

    将代码保存到本地,然后将代码拷贝到一个java工程中

    编写一个客户端类

    public class ClientTest {
    
    	public static void main(String[] args) {
    		HaiServiceImplService service=new HaiServiceImplService();
    		HaiServiceImpl impl = service.getHaiServiceImplPort();
    		String speak = impl.speak("hui");
    		System.out.println("client res:"+speak);
    	}
    }
    

    5.1通用代理调用

    import com.hai.server.TestServerInf;
    import com.hai.util.MyWSFactoryBean;
    
    public class ServerPublish {
    	
    	public static void main(String[] args) {
    		TestServerInf ws = MyWSFactoryBean.getMyWs("http://127.0.0.1:8787/webservice/ws?wsdl", TestServerInf.class);
    		String res = ws.speak("小苏");
    		System.out.println("结果:"+res);
    	}
    
    }
    

      

    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
    import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
    import org.apache.wss4j.dom.handler.WSHandlerConstants;
    
    import com.hai.security.MyClientSecurity;
    
    public class MyWSFactoryBean {
    
    	
    	public static <T>T getMyWs(String url,Class<T> t){
    		JaxWsProxyFactoryBean jwfb=new JaxWsProxyFactoryBean();
    		jwfb.setAddress(url);
    		jwfb.setServiceClass(t);
    		
    		if(t.getSimpleName().equals("LoginServerInf")) {
    			//加入安全协议
    			Map<String, Object> props=new HashMap<>();
    			props.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
    			props.put(WSHandlerConstants.PASSWORD_TYPE, "PasswordText");
    			props.put(WSHandlerConstants.PW_CALLBACK_CLASS, MyClientSecurity.class.getName());
    			WSS4JOutInterceptor interceptor=new WSS4JOutInterceptor(props);
    			jwfb.getOutFaultInterceptors().add(interceptor);
    		}
    		
    		T bean = (T) jwfb.create();
    		return bean;
    	}
    }
    

      

    6,通过soapui访问

    参考:https://blog.csdn.net/weiqing723/article/details/78865734

  • 相关阅读:
    bzoj3262 陌上花开
    bzoj2738 矩阵乘法
    bzoj3110 [Zjoi2013]K大数查询
    bzoj2527 [Poi2011]Meteors
    bzoj1758 [Wc2010]重建计划
    启动应用程序的Activty多种方式
    隐藏应用图标的多种方式
    Loading Large Bitmaps Efficiently
    java中的匿名内部类总结
    android listview addHeaderView和addFooterView的注意事项
  • 原文地址:https://www.cnblogs.com/dongma/p/9980192.html
Copyright © 2011-2022 走看看