webservice 随笔2

一、我们也可以这样写一个webservice的客户端来调用webserivce.

		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		
		/**
		 * wsdl的获取方法:在启动web工程的时候,我们输入url/service就可以看到工程里面的所有暴露的接口,
		 * 找到你需要的那个接口点进去后,看到的url就是需要的wadl
		 * 
		 */
		org.apache.cxf.endpoint.Client client = dcf.createClient("http://127.0.0.1:8080/lxjweb/service/test?wsdl");
		Object[] reply = null;
		String paramw = "admin1";
		String param = "admin2";
		try { 
			/**
			 * 调用的时候,第一个为实现时方法的名称
			 * 后面的参数才是方法所需要的参数
			 */
			reply = client.invoke("testMethod",paramw,param); 
			System.out.println(reply[0].toString());
		} catch (Exception e) { 
			e.printStackTrace(); 
		}

 二、这样写的时候,我们要把对应的接口映射过来

JaxWsProxyFactoryBean  factory = new JaxWsProxyFactoryBean (); 
	    factory.setServiceClass(ITest.class);
	    factory.setAddress("http://127.0.0.1:8080/lxjweb/service/test");
		Object obj = factory.create();
	    if(obj != null){
	    	ITest it = (ITest)obj;
	    	
			try {
				String s = it.testMethod("admin", "admin123");
				System.out.println(s);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    }

 三、服务端代码:接口

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

@WebService
public interface ITest {

	//当调用这个方法的时候,第一个参数为方法名称,后面的参数才是真正的参数
	@WebMethod
	public String testMethod(@WebParam(name="param1") String param1, @WebParam(name="param2") String param2);
	
}

 接口实现类

import javax.jws.WebService;

import com.lenovo.lxj.product.webservice.ITest;
/**
 * webService的一个实现类,
 * endpointInterface   表示实现的那个接口
 * targetNamespace     命名空间 
 * @author issuser
 *
 */
@WebService(endpointInterface = "com.lenovo.lxj.product.webservice.ITest",
		targetNamespace="http://webservice.product.lxj.lenovo.com/")
public class TestImpl implements ITest{

	@Override
	public String testMethod(String param1, String param2) {
		// TODO Auto-generated method stub
		
		String result = "This is  param1: " + param1 + ", this is param2: " + param2;
		
		return result;
	}

}

 配置文件

<jaxws:endpoint id="test" address="/test">
		<jaxws:implementor>
			<bean class="com.lenovo.lxj.product.webservice.impl.TestImpl">
			</bean>
		</jaxws:implementor>
	</jaxws:endpoint>

 注意在写配置文件的时候一定要引入

<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" />
 

注:做试验的时候,一定要把客户端和服务端分别写在两个工程里面。

你可能感兴趣的:(webservice)