[置顶] JAXWS学习(一)- HelloWorld

在学习CXF的时候,看到了这一篇博客,写的是JAXWS,觉得不错,就先学习一下博主的几篇博客,要多些博主的分享啊。

原文地址:http://blog.csdn.net/lifetragedy/article/details/7205832

这里写的应该算是,学习总结,根据自己的理解学习整理一下。


---------------------------------------------------------------------------------------------

JAX-WS的官方网站,大家可以在这里下载JAR包:https://jax-ws.java.net/

我也上传了资源:http://download.csdn.net/detail/jolingogo/5452285

这里用的是JAXWS2.2.7-20120813.zip,这里面有各种jar包,示例,文档。


这里依然使用Maven来管理项目

1.pom.xml

这里,暂时就加了一个依赖包jaxws-rt

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.deppon.demo</groupId>
  <artifactId>jaxws-demo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>jaxws-demo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <!-- 属性配置 -->
  <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
	    <groupId>com.sun.xml.ws</groupId>
	    <artifactId>jaxws-rt</artifactId>
	    <version>2.2.7</version>
	</dependency>
  </dependencies>
  
  <build>
    <finalName>jaxws-demo</finalName>
  </build>
</project>

2.写一个接口,写一个实现类,作为服务

IUserService

package com.deppon.demo.jaxws.service;

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

@WebService
public interface IUserService {
	
	@WebMethod(operationName="say")
	public String say(@WebParam(name="name") String name);
}

UserService

package com.deppon.demo.jaxws.service.impl;

import javax.jws.WebService;

import com.deppon.demo.jaxws.service.IUserService;

@WebService(endpointInterface="com.deppon.demo.jaxws.service.IUserService")
public class UserService implements IUserService {

	@Override
	public String say(String name) {
		System.out.println("name->" + name);
		return "你好," + name;
	}

}

3.sun-jaxws.xml

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> 
 
	<endpoint 
		name='UserService' 
		implementation='com.deppon.demo.jaxws.service.impl.UserService'
		url-pattern='/userService' />
		
</endpoints>

4.web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>

 	<listener>
        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>
</web-app>
这里就出现问题了,不知道为什么,在网上找的资料说,需要配置一个Servlet:

<servlet>       
		<servlet-name>UserService</servlet-name>        
		<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>        
	</servlet> 
	<servlet-mapping>        
		<servlet-name>WSServlet</servlet-name>        
		<url-pattern>/userService</url-pattern> 
	</servlet-mapping>

我看,官方的例子里也有这么个Servlet,但是,我把他删除了之后,只加了一个监听,也一样可以成功,这个问题,有待解决。

接下来,就可以部署项目了。

5.部署项目

将项目部署到Tomcat,还记得上面的sun-jaxws.xml吗,那里配置了一个url-pattern,这个在配置Servlet的时候见过,是一样的道理,

部署成功后,我们访问一下:

[置顶] JAXWS学习(一)- HelloWorld_第1张图片

我们可以单击一下WSDL链接:

[置顶] JAXWS学习(一)- HelloWorld_第2张图片



到这里的话,一切都还可以,接下来,如果想要再写一个服务的话,就稍微有点儿怪:

package com.deppon.demo.jaxws.service.impl;

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

@WebService(serviceName="HWService")
public class HelloWorld {
	
	@WebMethod()
	public String sayHello() {
		return "Hello world !";
	}
}

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> 
 
	<endpoint 
		name='userService' 
		implementation='com.deppon.demo.jaxws.service.impl.UserService'
		url-pattern='/userService' />
		
	<endpoint
		name="helloWorld"
		implementation="com.deppon.demo.jaxws.service.impl.HelloWorld"
		url-pattern="/helloworld"
	>
	</endpoint>
		
</endpoints>

好了,重启一下Tomcat,访问    http://localhost:8080/jaxws-demo/helloworld

[置顶] JAXWS学习(一)- HelloWorld_第3张图片

看到了吗,两个服务都显示出来了,当然,可能就是这么设计的


到这里,我们就从Java代码发布了一个服务,下一篇,我们根据这个服务,写一个客户端来测试一下。



你可能感兴趣的:(webservice,服务,jaxws)