初步接触webservice,以及demo
我最近由于工作方面的原因接触到webservice,怕自己以后会用到,所以记下来吧。
1.首先新建一个工程。可以是Web Project,也可以是Web Service Project。
2.然后导入 jar包,在myeclipe里面可以右键项目-->BuildPath-->Configure Build Path -->Add Library-->MyEclipse Library -->选择XFire 1.2 Core Libraries和XFire 1.2 HTTP Client Libraries。如果不是myeclipse我下面有把这个需要的jar打包了可以下载。
3.配置webService的控制器。在项目的WebRoot/WEB-INF/web.xml中配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
4.写我们的webService服务,我这个是一个demo我就建了一个接口一个实现类主要就是模拟下效果。
package cn.com.pansky.webservice.xfire.study;
public interface SayHiService {
public String sayHi(String name);
}
package cn.com.pansky.webservice.xfire.study;
public class SayHiServiceImpl implements SayHiService {
public String sayHi(String name) {
if (name == null) {
return "连名字也不肯告诉我么?";
} else {
return name + " ,你吃了么?没吃回家吃去吧!";
}
}
}
5.然后我们把我们配置的服务配置起来,我的做法是在根目录下面新建了一个WebServices目录,然后在里面新建了一个services.xml,如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>SayHiService</name> <namespace>http://cn.com.pansky/SayHiService</namespace> <serviceClass>cn.com.pansky.webservice.xfire.study.SayHiService </serviceClass> <implementationClass>cn.com.pansky.webservice.xfire.study.SayHiServiceImpl </implementationClass> </service> </beans>
6.然后我们就可以把我们的服务给启动起来,我是直接把项目放在tomcat里面运行就好了。我们来访问一下看看。那么下面的就是我们配置的SayHiService了。
7.然后我们怎么去调用我们的webService服务呢?
package cn.com.pansky.webservice.xfire.study;
import java.net.MalformedURLException;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;
public class SayHiClient {
public static void main(String[] args) {
String serviceURL = "http://localhost:8080/webServiceDemo/services/SayHiService";
Service serviceModel = new ObjectServiceFactory().create(
SayHiService.class, null, "http://cn.com.pansky/SayHiService",
null);
XFireProxyFactory serviceFactory = new XFireProxyFactory();
try {
SayHiService service = (SayHiService) serviceFactory.create(
serviceModel, serviceURL);
Client client = Client.getInstance(service);
client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "10");
String hello = service.sayHi("张三疯");
System.out.println("服务器对[张三疯]的回答是:" + hello);
hello = service.sayHi(null);
System.out.println("服务器胡言乱语说:" + hello);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
