发布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

posted @ 2018-11-18 22:45  冬马党  阅读(315)  评论(0编辑  收藏  举报