【JAX-WS入門シリーズ】第07章_Tomcatと統合
4482 ワード
サービスはウェブプロジェクトで、クライアントはJava Projectです。
まずはサービスのSEIです。
クライアントは一つのサービス端末を呼び出す例のClienntApp.javaしかありません。
注意:具体的なクライアントコードは、wsmeportによって生成されます。詳細は以下の通りです。http://blog.csdn.net/jadyer/article/details/8692108
まずはサービスのSEIです。
package com.jadyer.service;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService(targetNamespace="http://blog.csdn.net/jadyer")
public interface HelloService {
@WebResult(name="sayHelloResult")
public String sayHello(@WebParam(name="name")String name);
}
以下はサービスのSIBです。package com.jadyer.service;
import javax.jws.WebService;
@WebService(endpointInterface="com.jadyer.service.HelloService", targetNamespace="http://blog.csdn.net/jadyer")
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
System.out.println("Receive the name=[" + name + "]");
if(null==name){
return "Hello,World";
}else{
return "Hello," + name;
}
}
}
以下は集積に必要な//WebRoot/WEB-INF/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">
<!-- name: , web.xml Servlet -->
<!-- implementation: WebServices -->
<!-- url-pattern: -->
<endpoint name="myJaxWsTomcatDemo"
implementation="com.jadyer.service.HelloServiceImpl"
url-pattern="/myHello"/>
</endpoints>
<!--
JAX-WS WebServices Tomcat
1) WEB-INF sun-jaxws.xml
2) JAX-RI
3) web.xml
4) tomcat
JAX-RI WebService , ,JAX-RI
JAX-RI https://jax-ws.java.net, JAXWS2.2.7-20120813.zip
JAX-RI JAX-WS , , GlassFish ,GlassFish JavaEE
JAX-RI ( ), Metro
-->
最後は/WebRoot/WEB-INF/web.xmlです。<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<listener>
<!-- : jaxws-ri -->
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<!-- sun-jaxws.xml endpointName -->
<servlet-name>myJaxWsTomcatDemo</servlet-name>
<!-- : jaxws-ri Servlet -->
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myJaxWsTomcatDemo</servlet-name>
<!-- sun-jaxws.xml url-pattern -->
<!-- Tomcat http://127.0.0.1:8088/webPath/myHello?wsdl -->
<url-pattern>/myHello</url-pattern>
</servlet-mapping>
</web-app>
ここで、サービスエンドコードの例が終わりました。以下はクライアントコードです。クライアントは一つのサービス端末を呼び出す例のClienntApp.javaしかありません。
注意:具体的なクライアントコードは、wsmeportによって生成されます。詳細は以下の通りです。http://blog.csdn.net/jadyer/article/details/8692108
package com.jadyer.client;
import java.io.IOException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPException;
import net.csdn.blog.jadyer.HelloService;
import net.csdn.blog.jadyer.HelloServiceImplService;
/**
* wsimport -d D:/Download/ -keep -verbose http://127.0.0.1:8088/jaxws_tomcat/myHello?wsdl
* @create May 31, 2013 7:49:51 PM
* @author <http://blog.csdn.net/jadyer>
*/
public class ClientApp {
public static void main(String[] args) throws SOAPException, IOException {
// 8088, Eclipse TCP/IP Monitor, 8088 TCP/IP Monitor
String wsdlLocation = "http://127.0.0.1:8088/jaxws_tomcat/myHello?wsdl";
// wsdl <wsdl:definitions targetNamespace=""/>
String nameSpace = "http://blog.csdn.net/jadyer";
// wsdl <wsdl:service name="">
String serviceName = "HelloServiceImplService";
HelloServiceImplService helloServiceImpl = new HelloServiceImplService(new URL(wsdlLocation), new QName(nameSpace, serviceName));
HelloService hello = helloServiceImpl.getHelloServiceImplPort();
System.out.println(hello.sayHello(" "));
}
}