WebServices
首先,建立一个 web service project ,名称为WS-Server
1.建立一个接口类 IHelloWorld.java
/**
*
*/
package zz.it.interfs;
/**
* @author zwm
*
*/
public interface IHelloWorld {
public String getHelloWorld(String yourName);
}
2.搞定接口实现类HelloWorldImpl.java
/**
*
*/
package zz.it.impl;
import org.apache.log4j.Logger;
import zz.it.interfs.IHelloWorld;
/**
* @author zwm
*
*/
public class HelloWorldImpl implements IHelloWorld {
private static final Logger log=Logger.getLogger(HelloWorldImpl.class);
/* (non-Javadoc)
* @see zz.it.interfs.IHelloWorld#getHelloWorld(java.lang.String)
*/
public String getHelloWorld(String yourName) {
// TODO Auto-generated method stub
log.info("Server Hello you:>>>Welcome:"+yourName);
return yourName;
}
}
3.配置WebServices/下的services.xml文件
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>helloWorld</name>
<serviceClass>zz.it.interfs.IHelloWorld</serviceClass>
<implementationClass>
zz.it.impl.HelloWorldImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</beans>
4.因为用到了log4j,那就在弄个配置文件过来吧。
## LOGGERS ##
#define a logger named PP
#Test Used
log4j.rootLogger=info,console,file
## APPENDERS ##
# define an appender named console, which is set to be a ConsoleAppender
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.logger.PPLogger=WARN
log4j.logger.rootLogger.childLogger=,file
log4j.logger.rootLogger.jspLogger=,file
# define an appender named file, which is set to be a RollingFileAppender
# log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=pp.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
## LAYOUTS ##
# assign a SimpleLayout to console appender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# assign a PatternLayout to file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
# log4j.appender.file.layout.ConversionPattern=%t %p - %m%n
# log4j.appender.file.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%-5p] Method: %l%n%m%n
5.加载相应的jar包。注意几个
xfire-core-1.2.2.jar
log4j-1.2.11.jar
反正俺也不知道哪个需要与不需要,多加几个就是了。俺一次性加了28个jar,感觉是不是硬件性能太好了。
6.差不多了吧,开始着手客户端的编写。
***************************************************
*****************WS-Client**************************
***************************************************
同样建立一个Web service project WS-Client
1.建立与服务端相同的接口IHelloWorld.java
/**
*
*/
package zz.it.interfs;
/**
* @author zwm
*
*/
public interface IHelloWorld {
public String getHelloWorld(String yourName);
}
2.建立一个过渡文件WSConfig ,目的是为了从XML文件中通过相应webserivce访问的URL地址,感觉是不是有些多余。
package zz.it.test;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class WSConfig {
String protocol="";//协议
String ip="";//IP
String port="";//端口号
String serviceName="";//服务名称
public WSConfig() {
File xmlfile = new File("E:/workspace1/WS-Client/WebRoot/WEB-INF/wsconfig.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
Document Doc = null;
try {
builder = factory.newDocumentBuilder();
Doc = builder.parse(xmlfile);
} catch (Exception e) {
e.printStackTrace();
}
this.protocol = Doc.getElementsByTagName("protocol").item(0).getFirstChild()
.getNodeValue();
this.ip = Doc.getElementsByTagName("ip").item(0).getFirstChild()
.getNodeValue();
this.port = Doc.getElementsByTagName("port").item(0).getFirstChild()
.getNodeValue();
this.serviceName = Doc.getElementsByTagName("serviceName").item(0).getFirstChild()
.getNodeValue();
}
public static void main(String args[]){
new WSConfig();
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
public String getServiceName() {
return serviceName;
}
public void setServiceName(String serviceName) {
this.serviceName = serviceName;
}
}
上面所使用到的配置文件内容为wsconfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<!--protocol-->
<protocol>http://</protocol>
<!--IP-->
<ip>localhost</ip>
<!--port-->
<port>8099</port>
<!--serviceName-->
<serviceName>/WS-Server/services/helloWorld</serviceName>
</config>
3.建立差不多像测试的例子(俺对Junit不是特别浓缩)MainTest.java
/**
*
*/
package zz.it.test;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import zz.it.interfs.IHelloWorld;
/**
* @author zwm
*
*/
public class MainTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Service servModel = new ObjectServiceFactory()
.create(IHelloWorld.class);
//
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
WSConfig ws = new WSConfig();
String wsUrl = ws.getProtocol() + ws.getIp() + ":" + ws.getPort()
+ ws.getServiceName();
try {
IHelloWorld srvc = (IHelloWorld) factory.create(servModel, wsUrl);
System.out.println(srvc.getHelloWorld("@author:zwm"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
最好,我们将WS-Server装载到服务器,启动服务,运行MainTest,将会看到@author:zwm的信息。目前是在eclipse IDE下运行,控制台应该是@author:zwm
WS-Server采用是Tomcat,如果日志级别允许,则可以看到Server Hello you:>>>Welcome:@author:zwm
如此而已,不知上述是否正确,多多关照。
分享到:
相关推荐
Web Services学习笔记,主要内容是Web Services的理论知识。只有掌握了这些理论知识,才能更好的理解如何去部署、发布和调用Web Services。
Axis2版本学习笔记,CXF版学习笔记,WebServices学习笔记
Web Services 应用开发学习笔记,非常适合想学习 Web Services 的朋友
Java Java JavaEE hibernate struts spring jdbc jsp oracle EJB WEBServices,凯达Java学习笔记
CXF 包含了大量的功能特性,但是主要集中在以下几个方面: 支持 Web Services 标准:CXF 支持多种 Web Services 标准,包含 SOAP、Basic Profile、WS-Addressing、WS-Policy、WS-ReliableMessaging 和 WS-Security。...
2.使用VS.NET中的Add Web Reference菜单选项 23..net Remoting 的工作原理是什么? 答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。 24.在C#中,string str = null 与 string str = ...
CXF 是Celtix + Xfire的结合体,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache ...WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。Apache CXF已经是一个正式的Apache顶级项目。
AWS Basic Concepts的学习笔记基于Linux Academy在Udemy上创建的免费,该对云计算和Amazon Web Services的概念进行了简单,概念性的介绍。 AWS Solutions Architect – Associate Exam的详细学习笔记基于A Cloud ...
Java Java JavaEE hibernate struts spring jdbc jsp oracle EJB WEBServices
MuleESB支持集成现有系统而无论其底层采用何种技术,如JMS、WebServices、JDBC、HTTP以及其他技术。图整体结构从上图可见,Mule通过Transports/Connectors与外围的异构系统连接,提供Routing(路由)、...
springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...
这是我学习bpel所做的一些笔记,里面有的是直接摘抄上面的我觉得值得注意的地方。
全栈工程师 学习笔记 Spring Boot 项目实践 Spring Cloud 多模块实践 参考链接 Spring Boot引导页: MyBatis集成Spring Boot: 、、 Spring Cloud集成Eureka Spring Cloud集成Ribbon 、 Spring Cloud集成Zuul ...
AWS认证的Cloud Practitioner Essentials-电子学习笔记基于AWS E-Learning课程和成绩单的Notes编译。 资料来源:AWS在线学习教室链接到中型文章: : 模块清单: 模块1-Amazon Web Services简介第2单元-云计算模块3-...
Code Notes是一个动态的CRUD Web应用程序,为Web开发学生构建,可以在一个中央应用程序中组织其笔记,文档资源,闪存卡和代码示例。 维护者: Adam Botma ( Adam Botma , Adam Botma Jingwen Wu , John Nguyen ...
axis学习资料汇总: Axis实例与分析详解; Axis学习笔记.pdf; Tomcat5.0.28下AXIS完全安装手册.doc; Axis1.4 开发指南_V1.0.pdf; AXIS入门及应用.rar; Axis开发Web+Services.doc 等等
详细地讲授Web Service及其应用和相关的安全性问题、WSE(Web Services Enhancements)、SOAP、WSDL、UDDI、Windows Service、VSS(Visual Source Safe)。讲授用户控件和第三方控件的开发和使用。学习HTML、XML、...
详细地讲授Web Service及其应用和相关的安全性问题、WSE(Web Services Enhancements)、SOAP、WSDL、UDDI、Windows Service、VSS(Visual Source Safe)。讲授用户控件和第三方控件的开发和使用。学习HTML、XML、...
详细地讲授Web Service及其应用和相关的安全性问题、WSE(Web Services Enhancements)、SOAP、WSDL、UDDI、Windows Service、VSS(Visual Source Safe)。讲授用户控件和第三方控件的开发和使用。学习HTML、XML、...