Sun ONE Application Server 开发者指南(16)

类别:Java 点击:0 评论:0 推荐:

配置文件

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>

本文地址:http://com.8s8s.com/it/it16911.htm