- 浏览: 702067 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (239)
- 系统架构设计 (16)
- java collection framework (2)
- java分布式 (4)
- java多线程 (0)
- 故障处理及调优 (16)
- 软件开发过程及管理 (28)
- OS (5)
- 常用算法 (3)
- design pattern (8)
- transaction (7)
- java apps (48)
- corejava (7)
- java and DB (10)
- cache (0)
- webservice (14)
- web前端 (25)
- 报表 (4)
- 日志系统设计 (3)
- Oracle (4)
- mysql (11)
- xml (11)
- 数据源配置管理 (3)
- 企业数据存储 (4)
- php (2)
- 测试 (1)
最新评论
-
orangebook:
对于初学者来说,这样编写可能会误导,理解更烦锁。
观察者模式(发布-订阅) -
liudajiang:
呵呵 startThreads(rand ...
实践缩小Java synchronized 粒度 -
zengwenbo5566:
谢谢博主,学习了
解决getOutputStream() has already been called for this response -
u011335423:
大神厉害啊 可以了
解决getOutputStream() has already been called for this response -
xiang37:
...
解决getOutputStream() has already been called for this response
8.Axis集成Resin或其它应用服务器
8.1 如果配置和发布
Axis是以Servlet的方式运行的,而Resin的作用相当于Servlets容器(Container),因此只要配置得当,就可以使Axis在Resin环境中运行,这一点也适用于Resin以外的其它应用服务器。在Resin中配置Axis的方法如下。
将axis-1_1/webapps/axis/WEB-INF/web.xml中的Servlet配置项复制到resin.conf中对应的Web应用程序配置中。通常应包括以下内容。
一个servlet可以配置多个在url地址拦访问的方式.
<!-- Axis Web-Service Configuration Start -->
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<display-name>Axis Admin Servlet</display-name>
<servlet-class>
org.apache.axis.transport.http.AdminServlet
</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet>
<servlet-name>SOAPMonitorService</servlet-name>
<display-name>SOAPMonitorService</display-name>
<servlet-class>
org.apache.axis.monitor.SOAPMonitorService
</servlet-class>
<init-param>
<param-name>SOAPMonitorPort</param-name>
<param-value>5001</param-value>
</init-param>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/axis/servlet/AxisServlet</url-pattern>
</servlet-mapping>
访问方式:http:// localhost:8080/projectName/axis/servlet/AxisServlet
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
访问方式:http:// localhost:8080/projectName/*.jws
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
。
<servlet-mapping>
<servlet-name>SOAPMonitorService</servlet-name>
<url-pattern>/SOAPMonitor</url-pattern>
</servlet-mapping>
<!-- uncomment this if you want the admin servlet -->
<!--
<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/axis/servlet/AdminServlet</url-pattern>
</servlet-mapping>
-->
<!-- currently the W3C havent settled on a media type for WSDL;
http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft
for now we go with the basic 'it's XML' response -->
<mime-mapping>
<extension>wsdl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<!-- Axis Web-Service Configuration End -->
|
8.2 平台的配置方式
<servlet>
<servlet-name>axis</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>axis</servlet-name>
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>
8.3 Axis提供了哪些开发工具
Apache Axis提供了WSDL2Java和Java2WSDL两个开发工具。
WSDL2Java利用已知的WSDL文件生成服务端和客户端代码。该WSDL文件可以是由合作伙伴提供的,也可以是利用Java2WSDL生成的。Java2WSDL根据已有的Java类文件生成WSDL文件,Java类文件可以是接口类文件,并不需要实现细节。
此外Axis还提供了SoapMonitorApplet和TCPMon工具,可用于监测Web服务。
8.4 生成Web服务的服务端和客户端代码
8.4.1 生成或取得WSDL文件
Java2WSDL是Axis提供的利用Java类文件得到WSDL文件的工具。类文件可以使用接口文件编译生成,例如下面的接口文件SoftwarePrice.java。
package samples.userguide.example6;
/**
* Interface describing a web service to set and get software prices.
**/
public interface SoftwarePrice {
public void setWidgetPrice(String softWareName, String price);
public String getWidgetPrice(String softWareName);
|
编译SoftwarePrice.java。
javac SoftwarePrice.java
|
将SoftwarePrice.class复制到正确的package路径下。
执行下面的命令:
java org.apache.axis.wsdl.Java2WSDL -o sp.wsdl -l "http://test.com:80/services/SoftwarePrice" -n "urn:SoftwarePrice"
-p"samples.userguide.example6" "urn:Example6" samples.userguide.example6.SoftwarePrice
|
各参数的含义如下。
-o:指定输出的WSDL文件的文件名。
-l:指定服务的位置。
-n:WSDL文件的目标名字空间。
-p:指定从package到名字空间的映射,这里可以有多个映射。
|
最后面的类文件包含了Web服务的接口。
该命令执行后,将生成sp.wsdl文件。
如果按CLASSPATH的设置找不到指定的类文件,Axis将报告异常,如下所示。
java.lang.ClassNotFoundException: samples.userguide.example6.SoftwarePrice
at java.net.URLClassLoader$1.run(URLClassLoader.java:198)
at java.security.AccessController.doPrivileged(Native Method)
……
|
如果出现上面的问题,请检查是否已将有关类文件复制到正确的位置或CLASSPATH设置是否正确。
生成WSDL文件以后,就可以利用Axis提供的WSDL2Java工具生成Web服务的服务端代码和客户端代码了。
8.4.2 注意事项
WSDL文件也可以由合作伙伴提供。这种情况下合作伙伴往往是Web服务的提供者或标准接口的制定者,开发者只要按照既定的WSDL文件生成客户端或服务端代码就可以了。
8.4.3 生成客户端或服务端代码
WSDL2Java工具用于从WSDL文件生成客户端存根(stub)代码,服务端框架(skeleton)代码以及WSDL中的数据类型文件(生成与之对应的Java代码)。开发人员只需向框架代码中补充相关的业务逻辑代码即可得到完整的Web服务代码,因此该工具极大地减轻了开发人员的编码负担。WSDL2Java的使用举例如下。
java org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy true MyService.wsdl
|
执行上述命令后将生成下列文件。
No.
|
文件
|
用途
|
1.
|
deploy.wsdd
|
MyService服务的部署描述文件
|
2.
|
MyService.java
|
MyService服务的接口文件
|
3.
|
MyServiceService.java
|
获得MyService服务的接口文件
|
4.
|
MyServiceServiceLocator.java
|
实现MyServiceService接口
|
5.
|
MyServiceSoapBindingImpl.java
|
实现MyService接口,服务器需要其中补充业务逻辑
|
6.
|
MyServiceSoapBindingSkeleton.java
|
MyService服务的服务端框架代码,实现MyService, org.apache.axis.wsdl.Skeleton接口
|
7.
|
MyServiceSoapBindingStub.java
|
MyService服务的客户端存根代码,实现MyService接口
|
8.
|
undeploy.wsdd
|
注销MyService服务的部署描述文件
|
2.7.3编写Web服务客户端代码
Web服务的客户端程序完成对Web服务的调用,其程序结构如下。
import com.chinavnet.zx.service.v1_0.*;// WSDL2Java生成的package的名字空间;
public class TestClient {
public static void main (String[] args) throws Exception{
com.chinavnet.zx.service.v1_0.SPInterfaceForVNetLocator locator = new SPInterfaceForVNetLocator();//获得一个locator对象
locator.setMaintainSession(true);
com.chinavnet.zx.service.v1_0.SPInterfaceForVNetSoap service = locator.getSPInterfaceForVNetSoap();//获得服务对象
com.chinavnet.zx.service.v1_0.DetailLedgerFeedbackResult feedbackRes = null;
//初始化Web服务中定义的数据类型
try {
feedbackRes = service.generalLedgerFeedback();//调用Web服务的方法并取得返回值
System.out.println("FeedbackResult :");
if(feedbackRes != null)
{
System.out.println("SPID: " +feedbackRes.getSPID());
System.out.println("errorDesc: " +feedbackRes.getErrorDescription());
System.out.println("result: " +feedbackRes.getResult());
}else
{
System.out.println("feedbackRes is null!");
}
} catch (java.rmi.RemoteException re) {
// throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
re.printStackTrace();
}
}//End of main()
}//End of TestClient class
|
测试客户端程序是非常简单的,将客户端程序编译后,执行"java TestClient"即可。
2.8 如何编写服务端代码
向MyServiceSoapBindingImpl.java添加相关的业务逻辑代码后,将WSDL2Java生成的源程序编译,打包成jar文件,复制到/usr/local/apache/htdocs/WEB-INF/lib/目录下。
2.9 如何发布Web服务
有了deploy.wsdd文件并准备好类文件后,就可以发布MyService服务了。Axis在安装后自动发布了AdminService,利用它可以发布新的Web服务。方法如下。
java org.apache.axis.client.AdminClient -lhttp://localhost:80/services/AdminService deploy.wsdd
上面的命令执行后,有如下提示。
Processing file deploy.wsdd
<Admin>Done processing</Admin>
|
9 开发实例
9.1 Axis自带实例设置步骤
To run the address book sample, you must do the following:
1. Set up your CLASSPATH.
2. Generate the Java bindings from the AddressBook.wsdl file.
3. Compile the code.
4. Start a server.
5. Run the sample.
1. Set up your CLASSPATH.
The CLASSPATH must contain: an XML parser (ie., Xerces), JUnit
(www.junit.org), all the jars in the lib directory, and the directory
containing the samples subdirectory.
2. Generate the Java bindings from the AddressBook.wsdl file.
a. Change directory to the directory that contains the samples
subdirectory.
b. Run the command: java org.apache.axis.wsdl.WSDL2Java -s -d Session
-Nurn:AddressFetcher2=samples.addr samples\addr\AddressBook.wsdl
This will generate all the bindings, both client-side and server-side,
into the samples/addr subdirectory.
3. Compile the code.
a. Now you can change directory to samples/addr
b. And compile the sample: javac *.java
4. Start a server.
To run the sample, you will first need to run a server. To run a very
simple server you could run, in a separate window:
java org.apache.axis.transport.http.SimpleAxisServer -p 8080
5. Run the sample.
Finally, to run the client, run testit.sh or testit.cmd, depending on
your platform.
9.2 Axis开发webservice
最近的几个项目由于涉及到不同领域 不同技术平台的应用,所以在各个系统的接口部分,采用了webservice技术,来实现不同系统的业务对接.
由于我们采用J2EE平台,下面着重讲下利用axis在J2EE平台开发和部署webservice应用的问题.
下面以一个用户登录的例子介绍开发的过程.
1. Axis开发包下载.
Apache的一个项目,请下载(略)
2. 编写方法
package zpf;
import java.util.*;
import java.io.*;
public class SSOWebservice
{
/**
登陆并得到用户信息
*/
Public boolean login(String loginid, String password){
boolean ret=false;
if(loginid.equals(“zpf”)&&password.equals(“123”))
ret= true;
else
ret=false;
return ret;
}
/**
得到所有部门信息
*/
public zpf.DepartmentInfo[] getAllDepts(){
zpf.Department dept=new zpf.Department();
zpf.DepartmentInfo[] ret=dept.getAllDepartment();
return ret;
}
}
http://localhost:8080/kmwhc/services/SSOWebservice
编译,通过,不在累述.
发表评论
-
Tomcat6+axis1.4 Web服务发布及压力测试
2011-01-07 15:53 32821.环境配置 1.1安装jdk1.6.0 1.2安装tom ... -
webService(web服务)自动发布工具-源代码
2008-11-12 15:11 3311这个小工具特别适合对web服务相关知识了解较少,又急需上web ... -
web服务自动发布工具初步完成
2008-10-02 21:10 2228web服务自动发布工具简单介绍: 1.整个过程由web程序 ... -
想做个webservice自动部署工具,欢迎大家提点需求或意见
2008-09-24 16:14 2330最近遇到了一个实际的问题:怎样让一个不了解webservice ... -
使用axis开发webservice
2008-09-23 16:42 47401 介绍本文并不是想介绍Web服务的原理、系统架构等,我们假设 ... -
webservice开发和使用指南5
2008-09-22 17:18 181314.2 build.xml脚本代码 在这里增加了 ... -
webservice开发和使用指南4
2008-09-22 17:16 36793. 修改web.xml 加入如下代码<list ... -
Webservice开发和使用指南2
2008-09-22 17:13 43645.2 测试webservice接口工具 1. ... -
Webservice开发和使用指南1
2008-09-22 17:06 28171 .修改历史 Version Change ... -
webservice开源引擎的比较:Axis和CXF的比较
2008-09-22 15:09 5064在SOA领域,我们认为Web ... -
实战webservice安全策略
2008-07-09 12:51 8363前些日子公司的应用要 ... -
.net客户端调用java服务端,通讯数据加密解密思路及过程
2008-03-08 10:37 3997目前系统客户端用.net实现,java服务端采用了webser ... -
net的客户端调用java的web服务,服务端怎样保持session以及通讯的安全问题
2008-03-05 12:18 2236net的客户端调用java的web服务,在客户端怎样保持ses ...
相关推荐
WebService开发和使用指南 在IT领域,WebService是一种基于开放标准的、平台和语言无关的通信协议,用于在不同系统之间交换数据。它通过XML(eXtensible Markup Language)进行数据编码,使用SOAP(Simple Object ...
在金蝶EAS V7.5的Web Service开发指南中,详细介绍了以上各个步骤,包括具体的API使用示例、配置示例和常见问题解答。开发者应仔细阅读并参照指南实践,以充分利用金蝶EAS的Web Service功能,实现企业系统的高效集成...
【WebService开发指南】这篇文章主要介绍了基于Java的Axis2框架如何进行WebService的开发。Axis2是Apache组织提供的一个用于构建和部署Web服务的高级框架,它作为Axis1的升级版,提供了更多的特性和优化。 首先,...
1. 定义服务接口:使用Java注解(如@WebService)来声明服务接口,包括服务端点接口(SEI)和消息处理器接口。 2. 实现服务:为接口提供具体实现,处理客户端请求。 3. 创建WSDL:JAX-WS自动生成WSDL文件,描述服务...
EAS-WebService开发指南 本文档旨在指导开发者如何使用EAS-WebService开发指南...通过本文档,开发者可以了解如何使用EAS-WebService开发指南来构建Web服务,并且了解了WebService的开发流程和客户端开发的注意事项。
WebService 开发手册 WebService开发指南
BOSWebService开发指南[收集].pdf
【标题】"Web服务开发指南"是一本专为IT专业人士准备的深度教程,全面解析了Web服务(Web Service)的概念、技术栈以及实际开发过程。Web服务是一种基于互联网的、平台独立的通信协议,用于软件之间的交互,允许不同...
"C++环境下使用gsoap开发...本文为读者提供了一个全面的C++环境下使用gsoap开发WebService接口的操作指南,从WebService的概念和特点到gsoap的使用流程和选项,希望能够帮助读者更好地理解和掌握WebService开发技术。
WebService开发指南.rar WebService开发指南.rar
### WebService之CXF开发指南 #### 一、概述 WebService技术已经成为企业级应用中不可或缺的一部分,它使得不同系统之间能够以标准化的方式进行交互。在众多WebService框架中,Apache CXF因其灵活、强大的功能和...
### WebService开发过程详解 #### 一、概述 本文将详细介绍如何使用Eclipse集成开发环境(IDE)结合Tomcat服务器及Axis框架来开发一个简单的WebService应用。对于初学者来说,这是一个很好的入门指南,通过本教程...
Java WebService开发指南详细介绍了XFire、CXF和Axis这三个流行的Java WebService框架。通过阅读本指南,读者不仅可以了解到每个框架的特点、安装配置方法以及具体的使用实例,还可以学习到如何将这些框架整合起来...
EAS BOS开发指南中的WebService开发涉及多个关键知识点,主要包括: 1. BOSWebService的原理与功能 - Webservice是基于SOAP、WSDL和UDDI技术,通过XML格式的数据交换实现不同平台和应用系统间的协同工作。 - ...
总而言之,Axis2_WebService_开发指南涵盖了从基础准备到实例演示,再到高级特性的使用,为开发者提供了一套完整的Axis2 WebService开发教程。通过这个指南,开发者可以快速上手Axis2的使用,以及深入理解和应用其在...
【WebService XFire开发指南】 在IT行业中,WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的协议,允许不同系统之间的应用程序通过互联网进行通信。它提供了一种松散耦合的方式,使得分布式系统可以共享数据...
【WebService开发指南 源码】是一份详细指导如何使用AXIS进行WebService开发的源代码集合,主要聚焦在AXIS工具的使用上。AXIS是一个流行的开源Java库,用于实现Web Services,它允许开发者轻松地创建和部署SOAP...
WebService开发手册是指使用Web Service技术开发应用程序的指南。Web Service是一种基于XML的,平台无关的,跨语言的分布式应用程序的架构。它允许不同的应用程序之间相互通信和交换数据,从而实现业务流程的集成和...
1、发布成WebService的方法,其方法参数和返回值类型必须是下列列表中的类型,否则发布时看不见方法。是否可以添加异常未尝试。 2、早期的BOS Studio发布元数据是有BUG的,发布以后,元数据和配置文件并没有同步拷贝...