使用Axis在Tomcat下发布Webservice操作指南
2009-10-12 11:11
471 查看
http://blog.csdn.net/zhangzhaokun/archive/2009/09/24/4582977.aspx
验证没通过!
___________________________________________________________________________
最近在工作过程中总是需要向其它项目组提供Webservice的接口,由于开始需求不是很明确,接口的定义经常需要变更,每一次下来都需要将Java到
wsdl,从wsdl到Java,再根据wsdd文件在tomcat上deploy服务这个过程重复一遍.在这个过程中经常出现一些问题,尤其是长期不用
axis之后再突然这么用上一用的时候,总是有或多或少的问题存在,遂经上述过程的一些详细操作步骤整理了一些,供参考.
使用Axis在Tomcat下发布Webservice有如下几个步骤:
(1)用JavaBean写好要发布的服务的定义
(2)使用Java2WSDL命令,根据JavaBean生成WSDL文件
(3)使用Wsdl2Java命令,根据WSDL文件生成服务端源代码,以及deploy.wsdd文件
(4)根据deploy.wsdd文件在tomcat下发布Webservice服务
(1)用JavaBean写好要发布的服务的定义
以用户注册为例,需要提供如下样式的用户注册服务,输入参数为
com.huawei.mtv.commons.services.schemas.UserRegisterEvt,输出参数为
com.huawei.mtv.commons.services.schemas.UserRegisterResp.
UserManage接口文件定义:
view plain
copy to clipboard
print
?
package
com.huawei.mtv.commons.services;
import
com.huawei.mtv.commons.services.schemas.UserRegisterEvt;
import
com.huawei.mtv.commons.services.schemas.UserRegisterResp;
public
class
UserManage
{
public
UserRegisterResp register(UserRegisterEvt evt)
{
return
null
;
}
}
输入参数UserRegisterEvt源代码:
view plain
copy to clipboard
print
?
package com.huawei.mtv.commons.services.schemas;
public
class
UserRegisterEvt implements java.io.Serializable {
private
int
accessCode;
private
java.lang.String level;
private
java.lang.String userId;
public
UserRegisterEvt(){
}
public
int
getAccessCode(){
return
accessCode;
}
public
void
setAccessCode(
int
accessCode){
this
.accessCode = accessCode;
}
public
java.lang.String getLevel(){
return
level;
}
public
void
setLevel(java.lang.String level){
this
.level = level;
}
public
java.lang.String getUserId(){
return
userId;
}
public
void
setUserId(java.lang.String userId){
this
.userId = userId;
}
}
输出参数UserRegisterResp源代码:
view plain
copy to clipboard
print
?
package com.huawei.mtv.commons.services.schemas;
public
class
UserRegisterResp implements java.io.Serializable {
private
java.lang.String description;
private
java.lang.String returnCode;
public
java.lang.String getDescription(){
return
description;
}
public
void
setDescription(java.lang.String description){
this
.description = description;
}
public
java.lang.String getReturnCode() {
return
returnCode;
}
public
void
setReturnCode(java.lang.String returnCode){
this
.returnCode = returnCode;
}
}
在Eclipse环境下将上述定义文件导出为mtv-common.jar包.至此第一步算是完成了.
(2)使用Java2WSDL命令,根据JavaBean生成WSDL文件
这里我使用的是axis-1_4版本,具体使用到的jar包(只使用了axis-1_4中lib目录中自带的jar包)和命令参见如下代码。
java2wsdl.bat批处理文件 :
view plain
copy to clipboard
print
?
set
axis_home=D:/software/axis2/axis-1_4/lib
set
axis_path=%axis_home%/axis-ant.jar
set
axis_path=%axis_path%;%axis_home%/axis.jar
set
axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar
set
axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar
set
axis_path=%axis_path%;%axis_home%/jaxrpc.jar;
set
axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar
set
axis_path=%axis_path%;%axis_home%/mtv-common.jar
set
axis_path=%axis_path%;%axis_home%/saaj.jar
set
axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar
set
CLASSPATH=%CLASSPAHT%;%axis_path%
java org.apache.axis.wsdl.Java2WSDL -n "urn:UserManage"
-p
"com.huawei.mtv.commons.services"
"urn:UserManage"
-o
"UserManage.wsdl"
-l
"http://localhost:8080/axis/services/UserManage"
com.huawei.mtv.commons.services.UserManage
执行上述批处理文件之后就生成了UserManage.wsdl文件了.
Java2WSDL命令的个参数含义如下:
view plain
copy to clipboard
print
?
-o:指定输出的WSDL文件的文件名。
-l:指定服务的位置。
-n:WSDL文件的目标名字空间。
-p:指定从package到名字空间的映射,这里可以有多个映射。
要注意如下几点:
-o -l -n -p这些选项最好与后面选项对应的值之间没有空格,尤其是-p参数,有空格的话在生成WSDL文件的时候会报错.
(3)使用Wsdl2Java命令,根据WSDL文件生成服务端源代码,以及deploy.wsdd文件
使用如下wsdl2java.bat批处理文件来生成Webservice服务端和客户端源代码.
view plain
copy to clipboard
print
?
set
axis_home=D:/software/axis2/axis-1_4/lib
set
axis_path=%axis_home%/axis-ant.jar
set
axis_path=%axis_path%;%axis_home%/axis.jar
set
axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar
set
axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar
set
axis_path=%axis_path%;%axis_home%/jaxrpc.jar;
set
axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar
set
axis_path=%axis_path%;%axis_home%/mtv-common.jar
set
axis_path=%axis_path%;%axis_home%/saaj.jar
set
axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar
java org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy true
UserManage.wsdl
执行上述批处理文件之后会生成源代码的目录与结构如下:
UserManage_pkg包下生成文件如下:
view plain
copy to clipboard
print
?
deploy.wsdd
undeploy.wsdd
UserManage.java
UserManageService.java
UserManageServiceLocator.java
UserManageSoapBindingImpl.java
UserManageSoapBindingSkeleton.java
UserManageSoapBindingStub.java
另外也生成了com包,该包下的java文件与我们最初在第一步定义的文件基本相同.
利用Eclipse将上述生成的Java代码进行编译,导出为mtv-service.jar
(4)根据deploy.wsdd文件在tomcat下发布Webservice服务
将axis-1_4/webapps目录下的axis直接拷贝到tomcat/webapps目录下,再将mtv-service.jar包放到
tomcat/webapps/axis/WEB-INFO/lib目录下,将tomcat启动,执行如下deploy.bat批处理命令即可发布
UserManage服务了.
deploy.bat批处理文件如下:
view plain
copy to clipboard
print
?
set
axis_home=D:/software/axis2/axis-1_4/lib
set
axis_path=%axis_home%/axis-ant.jar
set
axis_path=%axis_path%;%axis_home%/axis.jar
set
axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar
set
axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar
set
axis_path=%axis_path%;%axis_home%/jaxrpc.jar;
set
axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar
set
axis_path=%axis_path%;%axis_home%/saaj.jar
set
axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar
java org.apache.axis.client.AdminClient -l"http://localhost:9000/axis/services/UserManage"
deploy.wsdd
经过上述4大步骤,我们的UserManage服务就顺利发布了.
通过http://localhost:9000/axis/servlet/AxisServlet
即可查看到刚才发布UserManage服务了.
验证没通过!
___________________________________________________________________________
最近在工作过程中总是需要向其它项目组提供Webservice的接口,由于开始需求不是很明确,接口的定义经常需要变更,每一次下来都需要将Java到
wsdl,从wsdl到Java,再根据wsdd文件在tomcat上deploy服务这个过程重复一遍.在这个过程中经常出现一些问题,尤其是长期不用
axis之后再突然这么用上一用的时候,总是有或多或少的问题存在,遂经上述过程的一些详细操作步骤整理了一些,供参考.
使用Axis在Tomcat下发布Webservice有如下几个步骤:
(1)用JavaBean写好要发布的服务的定义
(2)使用Java2WSDL命令,根据JavaBean生成WSDL文件
(3)使用Wsdl2Java命令,根据WSDL文件生成服务端源代码,以及deploy.wsdd文件
(4)根据deploy.wsdd文件在tomcat下发布Webservice服务
(1)用JavaBean写好要发布的服务的定义
以用户注册为例,需要提供如下样式的用户注册服务,输入参数为
com.huawei.mtv.commons.services.schemas.UserRegisterEvt,输出参数为
com.huawei.mtv.commons.services.schemas.UserRegisterResp.
UserManage接口文件定义:
view plain
copy to clipboard
?
package
com.huawei.mtv.commons.services;
import
com.huawei.mtv.commons.services.schemas.UserRegisterEvt;
import
com.huawei.mtv.commons.services.schemas.UserRegisterResp;
public
class
UserManage
{
public
UserRegisterResp register(UserRegisterEvt evt)
{
return
null
;
}
}
package com.huawei.mtv.commons.services; import com.huawei.mtv.commons.services.schemas.UserRegisterEvt; import com.huawei.mtv.commons.services.schemas.UserRegisterResp; public class UserManage { public UserRegisterResp register(UserRegisterEvt evt) { return null; } }
输入参数UserRegisterEvt源代码:
view plain
copy to clipboard
?
package com.huawei.mtv.commons.services.schemas;
public
class
UserRegisterEvt implements java.io.Serializable {
private
int
accessCode;
private
java.lang.String level;
private
java.lang.String userId;
public
UserRegisterEvt(){
}
public
int
getAccessCode(){
return
accessCode;
}
public
void
setAccessCode(
int
accessCode){
this
.accessCode = accessCode;
}
public
java.lang.String getLevel(){
return
level;
}
public
void
setLevel(java.lang.String level){
this
.level = level;
}
public
java.lang.String getUserId(){
return
userId;
}
public
void
setUserId(java.lang.String userId){
this
.userId = userId;
}
}
package com.huawei.mtv.commons.services.schemas; public class UserRegisterEvt implements java.io.Serializable { private int accessCode; private java.lang.String level; private java.lang.String userId; public UserRegisterEvt(){ } public int getAccessCode(){ return accessCode; } public void setAccessCode(int accessCode){ this.accessCode = accessCode; } public java.lang.String getLevel(){ return level; } public void setLevel(java.lang.String level){ this.level = level; } public java.lang.String getUserId(){ return userId; } public void setUserId(java.lang.String userId){ this.userId = userId; } }
输出参数UserRegisterResp源代码:
view plain
copy to clipboard
?
package com.huawei.mtv.commons.services.schemas;
public
class
UserRegisterResp implements java.io.Serializable {
private
java.lang.String description;
private
java.lang.String returnCode;
public
java.lang.String getDescription(){
return
description;
}
public
void
setDescription(java.lang.String description){
this
.description = description;
}
public
java.lang.String getReturnCode() {
return
returnCode;
}
public
void
setReturnCode(java.lang.String returnCode){
this
.returnCode = returnCode;
}
}
package com.huawei.mtv.commons.services.schemas; public class UserRegisterResp implements java.io.Serializable { private java.lang.String description; private java.lang.String returnCode; public java.lang.String getDescription(){ return description; } public void setDescription(java.lang.String description){ this.description = description; } public java.lang.String getReturnCode() { return returnCode; } public void setReturnCode(java.lang.String returnCode){ this.returnCode = returnCode; } }
在Eclipse环境下将上述定义文件导出为mtv-common.jar包.至此第一步算是完成了.
(2)使用Java2WSDL命令,根据JavaBean生成WSDL文件
这里我使用的是axis-1_4版本,具体使用到的jar包(只使用了axis-1_4中lib目录中自带的jar包)和命令参见如下代码。
java2wsdl.bat批处理文件 :
view plain
copy to clipboard
?
set
axis_home=D:/software/axis2/axis-1_4/lib
set
axis_path=%axis_home%/axis-ant.jar
set
axis_path=%axis_path%;%axis_home%/axis.jar
set
axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar
set
axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar
set
axis_path=%axis_path%;%axis_home%/jaxrpc.jar;
set
axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar
set
axis_path=%axis_path%;%axis_home%/mtv-common.jar
set
axis_path=%axis_path%;%axis_home%/saaj.jar
set
axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar
set
CLASSPATH=%CLASSPAHT%;%axis_path%
java org.apache.axis.wsdl.Java2WSDL -n "urn:UserManage"
-p
"com.huawei.mtv.commons.services"
"urn:UserManage"
-o
"UserManage.wsdl"
-l
"http://localhost:8080/axis/services/UserManage"
com.huawei.mtv.commons.services.UserManage
set axis_home=D:/software/axis2/axis-1_4/lib set axis_path=%axis_home%/axis-ant.jar set axis_path=%axis_path%;%axis_home%/axis.jar set axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar set axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar set axis_path=%axis_path%;%axis_home%/jaxrpc.jar; set axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar set axis_path=%axis_path%;%axis_home%/mtv-common.jar set axis_path=%axis_path%;%axis_home%/saaj.jar set axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar set CLASSPATH=%CLASSPAHT%;%axis_path% java org.apache.axis.wsdl.Java2WSDL -n "urn:UserManage" -p"com.huawei.mtv.commons.services" "urn:UserManage" -o "UserManage.wsdl" -l "http://localhost:8080/axis/services/UserManage" com.huawei.mtv.commons.services.UserManage
执行上述批处理文件之后就生成了UserManage.wsdl文件了.
Java2WSDL命令的个参数含义如下:
view plain
copy to clipboard
?
-o:指定输出的WSDL文件的文件名。
-l:指定服务的位置。
-n:WSDL文件的目标名字空间。
-p:指定从package到名字空间的映射,这里可以有多个映射。
-o:指定输出的WSDL文件的文件名。 -l:指定服务的位置。 -n:WSDL文件的目标名字空间。 -p:指定从package到名字空间的映射,这里可以有多个映射。
要注意如下几点:
-o -l -n -p这些选项最好与后面选项对应的值之间没有空格,尤其是-p参数,有空格的话在生成WSDL文件的时候会报错.
(3)使用Wsdl2Java命令,根据WSDL文件生成服务端源代码,以及deploy.wsdd文件
使用如下wsdl2java.bat批处理文件来生成Webservice服务端和客户端源代码.
view plain
copy to clipboard
?
set
axis_home=D:/software/axis2/axis-1_4/lib
set
axis_path=%axis_home%/axis-ant.jar
set
axis_path=%axis_path%;%axis_home%/axis.jar
set
axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar
set
axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar
set
axis_path=%axis_path%;%axis_home%/jaxrpc.jar;
set
axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar
set
axis_path=%axis_path%;%axis_home%/mtv-common.jar
set
axis_path=%axis_path%;%axis_home%/saaj.jar
set
axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar
java org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy true
UserManage.wsdl
set axis_home=D:/software/axis2/axis-1_4/lib set axis_path=%axis_home%/axis-ant.jar set axis_path=%axis_path%;%axis_home%/axis.jar set axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar set axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar set axis_path=%axis_path%;%axis_home%/jaxrpc.jar; set axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar set axis_path=%axis_path%;%axis_home%/mtv-common.jar set axis_path=%axis_path%;%axis_home%/saaj.jar set axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar java org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy true UserManage.wsdl
执行上述批处理文件之后会生成源代码的目录与结构如下:
UserManage_pkg包下生成文件如下:
view plain
copy to clipboard
?
deploy.wsdd
undeploy.wsdd
UserManage.java
UserManageService.java
UserManageServiceLocator.java
UserManageSoapBindingImpl.java
UserManageSoapBindingSkeleton.java
UserManageSoapBindingStub.java
deploy.wsdd undeploy.wsdd UserManage.java UserManageService.java UserManageServiceLocator.java UserManageSoapBindingImpl.java UserManageSoapBindingSkeleton.java UserManageSoapBindingStub.java
另外也生成了com包,该包下的java文件与我们最初在第一步定义的文件基本相同.
利用Eclipse将上述生成的Java代码进行编译,导出为mtv-service.jar
(4)根据deploy.wsdd文件在tomcat下发布Webservice服务
将axis-1_4/webapps目录下的axis直接拷贝到tomcat/webapps目录下,再将mtv-service.jar包放到
tomcat/webapps/axis/WEB-INFO/lib目录下,将tomcat启动,执行如下deploy.bat批处理命令即可发布
UserManage服务了.
deploy.bat批处理文件如下:
view plain
copy to clipboard
?
set
axis_home=D:/software/axis2/axis-1_4/lib
set
axis_path=%axis_home%/axis-ant.jar
set
axis_path=%axis_path%;%axis_home%/axis.jar
set
axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar
set
axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar
set
axis_path=%axis_path%;%axis_home%/jaxrpc.jar;
set
axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar
set
axis_path=%axis_path%;%axis_home%/saaj.jar
set
axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar
java org.apache.axis.client.AdminClient -l"http://localhost:9000/axis/services/UserManage"
deploy.wsdd
set axis_home=D:/software/axis2/axis-1_4/lib set axis_path=%axis_home%/axis-ant.jar set axis_path=%axis_path%;%axis_home%/axis.jar set axis_path=%axis_path%;%axis_home%/commons-discovery-0.2.jar set axis_path=%axis_path%;%axis_home%/commons-logging-1.0.4.jar set axis_path=%axis_path%;%axis_home%/jaxrpc.jar; set axis_path=%axis_path%;%axis_home%/log4j-1.2.8.jar set axis_path=%axis_path%;%axis_home%/saaj.jar set axis_path=%axis_path%;%axis_home%/wsdl4j-1.5.1.jar java org.apache.axis.client.AdminClient -l"http://localhost:9000/axis/services/UserManage" deploy.wsdd
经过上述4大步骤,我们的UserManage服务就顺利发布了.
通过http://localhost:9000/axis/servlet/AxisServlet
即可查看到刚才发布UserManage服务了.
相关文章推荐
- 使用Axis在Tomcat下发布Webservice操作指南
- 使用myEclipse,tomcat 和Axis发布webService
- 【转载】使用myEclipse,tomcat 和Axis发布webService
- 使用myEclipse,tomcat 和Axis发布webService
- 使用myEclipse,tomcat 和Axis发布webService
- 使用myEclipse,tomcat 和Axis发布webService
- 使用myEclipse,tomcat 和Axis发布webService
- axis webservice tomcat 服务发布总结之相关流程和问题汇总
- 使用axis1.4发布WebService简单示例
- Axis + Tomcat + Eclipse 发布 WebService
- 使用Jax-ws将webservice发布到Web容器(Tomcat)
- Spring boot 集成Axis1.4 ,使用wsdd文件发布webservice
- 使用Axis发布WebService相关环境准备
- 如何使用Axis发布WebService
- 使用Apache cxf 和Spring在Tomcat下发布Webservice指南
- WebService -- Java 实现之 CXF ( 使用:Spring+CXF+Tomcat发布webService)
- 使用axis发布简单的webservice
- 用Tomcat+axis发布webservice的一点体会
- 使用Apache cxf 和Spring在Tomcat下发布Webservice指南
- 使用契约优先的方式来开发WebService(用到了jaxws-ri),并发布到tomcat中