配置文件
Wscompile工具读取配置文件,其中包含了描述web服务的信息。配置文件的基本结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration
xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
<service> or <wsdl> or <modelfile>
</configuration>
如果在配置文件中使用<service>元素,wscompile工具会读取描述服务的RMI接口并生成WSDL文件。
如果在配置文件中使用< wsdl >元素,wscompile工具会读取服务的WSDL文件并生成服务的RMI接口。
如果配置文件中包含了一个<service>或 <wsdl> 元素,wscompile工具会生成一个模型文件,它包含了描述服务的内部数据结构。如果已经按照这种方式生成了一个模型文件,那么下一次运行wscompile工具的时候可以重用它。
关于用于创建配置文件的XML schema的信息,请参见"XML Schema定义"。
含有RMI接口的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
<service name="[1]"
targetNamespace="[2]" typeNamespace="[3]"> packageName="[4]">
<interface name="[5]"
servantName="[6]" soapAction="[7]" soapActionBase="[8]"/>
<typeMappingRegistry> [9] </typeMappingRegistry>
</service>
</configuration>
配置文件含有以下Web服务属性:
- servicename -该属性用来生成一个被基于servlet的JAX-RPC运行时使用的属性文件,目的是分发请求到tie-和-servant结合处。
- targetNamespace -该属性为生成的WSDL文件指定目标命名空间。
- typeNamespace - 该属性为生成的WSDL文件的schema部分指定目标命名空间。
- packageName -为生成的Java类指定包名称。例如,从javax.xml.rpc.Service扩展的服务接口。
- interface name -指定完全符合规范的Java接口名称。
- servantName -指定完全符合规范的伺服类名称。
- soapAction -为相应端口所有操作指定的名为SOAPAction的字符串。这是一个可选项。
- soapActionBase - 为相应端口所有操作的SOAPAction字符串指定的前缀。
- typeMappingRegistry -指定类型映射信息。
注意
一个基本servlet类com.sun.xml.rpc.server.http.JAXRPCServlet被应用到所有的JAX-RPC终端。
包含WSDL文档的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://java.sun.com/jax-rpc-ri/xrpcc-config">
<wsdl location="[1]" packageName="[2]"> <typeMappingRegistry>[3] </typeMappingRegistry>
</wsdl>
</configuration>
包含WSDL文档的配置文件具有以下属性:
- wsdl location – 指向一个WSDL文件的URL
- packageName – 为生成的类/接口指定一个完全符合规范的程序包名称。
- typeMappingRegistry –确定映射信息的类型
wsdeploy 工具
wsdeploy工具为服务生成可部署的WAR文件。该工具把一个WAR 文件作为服务的输入。
Wsdeploy命令的语法如下:
wsdeploy [options] war file
wsdeploy命令选项
下表列出了可以和wsdeploy命令一起使用的选项。第一列给出选项,第二列对其进行了描述。
wsdeploy工具选项
选项 |
描述 |
-classpath<classpath_string> |
指定输入类文件的路径 |
cp<classpath_string> |
同classpath |
-tmp<directory_name> |
指定临时目录的路径 |
-o<output war file> |
指定生成的WAR文件将要保存的路径。该选项是必须指定的。 |
-keep |
编译完成之后保留生成的.java文件 |
-verbose |
编译器执行后输出消息 |
-version |
打印版本信息 |
war file-一般来说,你使用一个部署工具或是asant war任务来创建WAR文件。下面是一个简单的WAR文件的内容:
META-INF/MANIFEST.MF WEB-INF/classes/hello/HelloIF.class WEB-INF/classes/hello/HelloImpl.class WEB-INF/jaxrpc-ri.xml WEB-INF/web.xml
在例子中,HelloIF是服务的RMI接口,HelloImpl是实现接口的类。web.xml文件是web组件的配置描述文件。
Wsdeploy工具检查配置描述文件web.xml和jaxrpc-ri.xml,从而生成WAR文件。如果配置描述文件指定了一个模型文件,该模型文件的信息被用来生成WAR文件。如果配置描述文件没有指定一个模型文件,wsdeploy会生成一个模型。关于用于创建模型文件的XML schema的信息,请参见"XML Schema定义"。
在内部,wsdeploy工具使用-gen:server选项运行了wscompile工具。就是说,该工具生成了服务器端的附件,例如tie。该工具还能够生成服务终端定义,或是WSDL文件。
jaxrpc-ri.xml文件
jaxrpc-ri.xml文件是JAX-RPC实现的特定配置文件。wsdeploy工具读取这个配置文件。下面的代码列出了一个简单的HelloWorld服务的jaxrpc-ri.xml文件内容。
<?xml version="1.0" encoding="UTF-8"?>
<webServices
xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd" version="1.0 targetNamespaceBase="http://com.test/wsdl" typeNamespaceBase="http://com.test/types" urlPatternBase="/ws"> <endpoint name="HelloWorld" displayName="Hello Service" description="A simple web service" interface="samples.webservices.jaxrpc.dynamic.HelloIF" implementation="samples.webservices.jaxrpc.dynamic.HelloImpl"/ <endpointMapping
endpointName="HelloWorld" urlPattern="/dynamic"/> </webServices>>
<webServices> 元素必须包含一个或者多个<endpoint>元素。注意,在这个例子中<endpoint>的接口和实现属性指定了服务的接口和实现类。<endpointMapping>绑定服务接口到一个代表URL路径的元素,该URL符合urlPatternBase。关于创建运行时描述文件的XML schema的信息,请参见"XML Schema定义"。
命名空间映射
本节的阅读对象是那些熟悉WSDL、 SOAP、和JAX-RPC规范的开发人员。
这里有一个schema类型名称的例子:
schemaType="ns1:SampleType" xmlns:ns1="http://echoservice.org/types"
当从schema类型生成Java类型的时候,wscompile从schema类型名称的本地部分获取类名。
为了指定生成的Java类的包名称,你需要在schema类型命名空间和包名称之间定义一个映射。可以通过添加<namespaceMappingRegistry>元素到config.xml文件来定义这种映射。例如:
<service>
...
<namespaceMappingRegistry>
<namespaceMapping namespace="http://echoservice.org/types" packageName="echoservice.org.types"/>
</namespaceMappingRegistry>
...
</service> 
|