1.java如何写webservice服务端
Java 中的 Web Service 分为基于 SOAP 的和基于 REST 的两种,下面简单说一个基于 SOAP 的例子。要使用 JDK6u4 之后的版本才能编译通过。
先编写一个 Web Service 的接口:
@WebService
@SOAPBinding(style = Style.RPC)
public interface TimeServer {
@WebMethod String getTimeAsString();
@WebMethod long getTimeAsElapsed();
}再编写 Web Service 实现:
import java.util.Date;
import javax.jws.WebService;
@WebService(endpointInterface = "test.TimeServer")
public class TimeServerImpl implements TimeServer {
public String getTimeAsString() { return new Date().toString(); }
public long getTimeAsElapsed() { return new Date().getTime(); }
}最后启动 Web Service:
public class TimeServerPublisher {
public static void main(String[ ] args) {
Endpoint.publish("mons-discovery-0.2.jar、commons-logging.jar、jaxrpc.jar、saaj.jar、wsdl4j.jar 最好将jar包拷贝到工程的WEB-INF/lib下后直接引用本工程内的jar包,这样不会导致工程文件夹或jar包所在文件夹移动后读取不到jar包的问题:分别单击顶层对话框和“Properties”对话框的“OK”按钮完成jar包引用。
5、新建package和java文件,如下图所示:首先说说com.test.javabean.Student.java这个类。看得出来这个类是个JavaBean,目的是为了封装一个Java的实体类,这样做的好处是万一要把很多变量返回给客户端的话,客户端不至于在方法中声明很多形参来接收,而是通过一个对象来接收。
Student.java的实现如下:[java] view plain copy package com.test.javabean; import java.io.Serializable; public class Student implements Serializable{ private String ID; private String Name; private String Sex; private int age; public String getID() { return ID; } public void setID(String iD) { ID = iD; } public String getName() { return Name; } public void setName(String name) { Name = name; } public String getSex() { return Sex; } public void setSex(String sex) { Sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 再来看看com.test.webservice.CStudent.java这个类,定义如下:[java] view plain copy package com.test.webservice; import javax.jws.WebService; import com.test.javabean.Student; @WebService public class CStudent { public Student getStudent(String name) throws java.rmi.RemoteException{ Student student = new Student(); student.setName(name); student.setAge(14); student.setID("25"); student.setSex("Male"); return student; } } 为了简单起见,就不涉及到更多的后台查询了,先写死返回结果吧。不知您注意到了没有,这个类跟普通类的区别是在类的顶部加了个“@WebService”声明。
对,这样就是个WebService方法了,是不是也很简单?但是这样就得记着在上面引入javax.jws.WebService包。偶对了,这种方式是JDK1.7里增加的方式,所以要想使用这种特性,就得麻烦您把JDK升级到1.7,方法很简单,用绿色版的就可以啦,不用劳烦您把JDK卸了又重装。
只需要把JDK放到哪个盘的根目录(这样是为了防止路径中有空格或是括号什么的,否则一旦出问题您就苦逼了),然后把JDK的路径定义为JAVA_HOME,再在path中增加%JAVA_HOME%/bin;就可以了。这样做的好处是可以随时很方便地更换JDK的版本,而不需要卸载后再重新安装。
扯远了。有了WebService的方法体,您还需要再发布一下WebService,所以还得新建一个com.test.servlet.CStudentServlet.java类:[java] view plain copy package com.test.servlet; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Properties; import javax.jws.WebService; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet..test.webservice.CStudent; public class CStudentServlet extends HttpServlet{ /** * @see Servlet#init(ServletConfig) */ public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub super.init(config); System.out.println("正在启动WebService服务:http://192.168.56.1:8082/JavaWebService/Student"); Endpoint.publish("http://192.168.56.1:8082/JavaWebService<。