分析java2wsdl工具的过程
来源:互联网 发布:php mysqli扩展 编辑:程序博客网 时间:2024/06/15 06:19
一个java2wsdl的使用,把一个.java文件生成为一个WSDL服务文件
WSDL(Web Services Description Language)
WSDL是Web Service的描述语言,用于描述Web Service的服务,接口绑定等
以下的错误环境,让我很好的了解一个.java文件如何生成一个.WSDL文件的过程,这种过程很像推理,很有意思
D:\Apache_SOAP\axis2-1.6.0-bin\axis2-1.6.0\samples\quickstart\src\samples\quicks
tart\service\pojo>%AXIS2_HOME%\bin\java2wsdl -cp . -cn samples.quickstart.servic
e.pojo.StockQuoteService -of StockQuoteService.wsdl
Using AXIS2_HOME: D:\Apache_SOAP\axis2-1.6.0-bin\axis2-1.6.0
Using JAVA_HOME: C:\Program Files\Java\jdk1.6.0
log4j:WARN No appenders could be found for logger (org.apache.axis2.util.Loader)
.
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ClassNotFoundException: samples.quickstart.
service.pojo.StockQuoteService
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.axis2.description.java2wsdl.Java2WSDLUtils.namespaceFromCl
assName(Java2WSDLUtils.java:65)
at org.apache.axis2.description.java2wsdl.Java2WSDLUtils.schemaNamespace
FromClassName(Java2WSDLUtils.java:84)
at org.apache.ws.java2wsdl.Java2WSDLBuilder.getSchemaTargetNamespace(Jav
a2WSDLBuilder.java:120)
at org.apache.ws.java2wsdl.Java2WSDLBuilder.generateWSDL(Java2WSDLBuilde
r.java:211)
at org.apache.ws.java2wsdl.Java2WSDLCodegenEngine.generate(Java2WSDLCode
genEngine.java:60)
at org.apache.ws.java2wsdl.Java2WSDL.main(Java2WSDL.java:36)
开始解释java class类的加载过程:
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
通过URLClassLoader$1进行寻找(run)
at java.security.AccessController.doPrivileged(Native Method)
然后通过AccessController(访问权限控制类),赋予权限,让它有寻找的权限
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
由于赋予了doPrivileged动作,赋予了权限,所以可以去做findClass的动作,找到这个Class
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
找到Class之后,就要开始加载
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
找到Class之后,就要开始加载(两句都是加载,至于有什么不同,我没有深究,有机会再说)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
外部加载后,现在开始内部加载。
at java.lang.Class.forName0(Native Method)
加载和内部加载都Ok之后,现在就可以通过forName这个方法对Class进行调用(Native method 本地方法)
at java.lang.Class.forName(Class.java:247)
当然是用Clsss类里面的forName方法的调用
这个过程,我感觉可以很好的理解一个class类的寻找和加载过程。
加载类完后,开始生产WSDL生成过程:
at org.apache.axis2.description.java2wsdl.Java2WSDLUtils.namespaceFromCl
assName(Java2WSDLUtils.java:65)
首先从ClassName得到namespace(空间域名)
at org.apache.axis2.description.java2wsdl.Java2WSDLUtils.schemaNamespace
FromClassName(Java2WSDLUtils.java:84)
接着从ClassName得到schemaNamespace(空间域名模板)
at org.apache.ws.java2wsdl.Java2WSDLBuilder.getSchemaTargetNamespace(Jav
a2WSDLBuilder.java:120)
得到SchemaTargetNamespace(目标空间域名模板)
at org.apache.ws.java2wsdl.Java2WSDLBuilder.generateWSDL(Java2WSDLBuilde
r.java:211)
有了SchemaTargetNamespace(目标空间域名模板)就可以generateWSDL(生产WSDL服务文件)
at org.apache.ws.java2wsdl.Java2WSDLCodegenEngine.generate(Java2WSDLCode
genEngine.java:60)
开始生产
at org.apache.ws.java2wsdl.Java2WSDL.main(Java2WSDL.java:36)
最后调用main方法,执行
WSDL文件生成过程:从ClassName得到namespace和schemaNamespace,both of namespaches get SchemaTargetNamespace and then
generateWSDL, do generate, at of all ,fininshed.
- 分析java2wsdl工具的过程
- axis的JAVA2WSDL中万恶的in0
- 对“分析网页的过程及工具”的功能记录
- 问题排查中用到的工具及通用分析过程
- 过程设计的工具
- CXF2.0中java2wsdl命令生成wsdl文件的常用参数
- 需求分析的过程
- Lucene的分析过程
- 系统的分析过程
- Lucene的分析过程
- Lucene的分析过程
- HTTPS的过程分析
- 分析域名解析的过程
- 分析域名解析的过程
- 分析域名解析的过程
- 分析.net的工具
- SQLT工具的安装过程
- 手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程
- Ubuntu 11.10为何优雅漂亮?
- 基于DSP/BIOS和NDK的嵌入式网络操作系统设计方案
- Win7系统 用户配置文件服务登录失败
- Eclipse SVN的一些错误解决方法
- EAS BOS 回滚提交数据
- 分析java2wsdl工具的过程
- 使用jQuery5分钟快速搞定双色表格
- java.lang.SecurityException: Prohibited package name: java.demo 定位问题
- WPF ItemTemplateSelector
- 算法的定义及算法的复杂度
- jQuery插件ccdialog 功能齐全的对话框效果【原创】
- ORM 和 Hibernate
- flexigrid教程(一)-jquery最好的grid插件
- 如何让COOKIE在赋值后立即可以使用(无需刷新)