Eclipse搭建Web Service服务 之 jax-ws方式
Eclipse搭建Web Service服务端
1、建立动态Web工程(Dynamic Web Project),工程名为Server。编写类HelloWorld。
package com.mysever;
public class HelloWorld {
public String sayHello(String name){
return name + ",你好";
}
}
2、新建一个Web Service,在弹出的窗口中找到Service implementation一项:指定要发布的服务。
3、点击“Finish”后,Eclipse会自动添加三方文件或内容。 HelloWorldDelegate.java WEB-INF/sun-jaxws.xml,WEB-INF/web.xml
package com.mysever;
@javax.jws.WebService(targetNamespace = "http://mysever.com/", serviceName = "HelloWorldService", portName = "HelloWorldPort")
public class HelloWorldDelegate {
com.mysever.HelloWorld helloWorld = new com.mysever.HelloWorld();
public String sayHello(String name) {
return helloWorld.sayHello(name);
}
}
WEB-INF/sun-jaxws.xml
<?xml version = "1.0"?>
<endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
<endpoint name="HelloWorldPort" implementation="com.mysever.HelloWorldDelegate" url-pattern="/HelloWorldPort"></endpoint>
</endpoints>
WEB-INF/web.xml
<servlet>
<description>JAX-WS endpoint - HelloWorldService</description>
<display-name>HelloWorldService</display-name>
<servlet-name>HelloWorldService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldService</servlet-name>
<url-pattern>/HelloWorldPort</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
打开Tomcat服务(JDK:1.7,在对应的包下有jaxws文件夹生成。),输入http://localhost:8080/projectName/portName,访问Web Service。
可以看到当前类的提供的方法,说明成功。打开对应的接连:http://localhost:8001/aaa/HelloWorldPort?wsdl ,可以看到XML文件说明。
可以使用客户端工具:SOAP工具。
如果不能生成:增加JAR包
jaxws文件位文件内容:
sayHello.class:
package com.mysever.jaxws;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name="sayHello", namespace="http://mysever.com/")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="sayHello", namespace="http://mysever.com/")
public class SayHello
{
@XmlElement(name="arg0", namespace="")
private String arg0;
public String getArg0()
{
return this.arg0;
}
public void setArg0(String arg0)
{
this.arg0 = arg0;
}
}
package com.mysever.jaxws;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name="sayHelloResponse", namespace="http://mysever.com/")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="sayHelloResponse", namespace="http://mysever.com/")
public class SayHelloResponse
{
@XmlElement(name="return", namespace="")
private String _return;
public String getReturn()
{
return this._return;
}
public void setReturn(String _return)
{
this._return = _return;
}
}
4、创建工程(Java、Web工程均可),工程名为:client。
Eclipse搭建Web Service客户端
5、创建客户端。创建过程File-->New-->Other->Web Service Client 。
6、引用服务,在弹出来的对话框中找到Service definition,填写服务端的URL地址,点击“Finsh”,自动导入需要的包和生成代码文件。
7、新建测试类Test。
package com.test; import java.rmi.RemoteException; import com.mysever.HelloWorld; import com.mysever.HelloWorldProxy; public class Test { public static void main(String[] args) { try { HelloWorld service = new HelloWorldProxy(); System.out.println(service.sayHello("aaa")); } catch (RemoteException e) { e.printStackTrace(); } } }
错误及解决:生成的时候出现
Project must be a JEE 5 or higher web project 解决办法:.mymetadata文件:project-module--》j2ee-spec="6.0"