📄 jax2.htm
字号:
<TD>
<P>读取一个WSDL文件,生成服务的RMI接口和一个实现该接口的类的模板</P></TD></TR>
<TR>
<TD>
<P>-keep </P></TD>
<TD>
<P>保持生成的文件 </P></TD></TR>
<TR>
<TD>
<P>-model <file> </P></TD>
<TD>
<P>将内部模型写入到给定文件</P></TD></TR>
<TR>
<TD>
<P>-nd <directory> </P></TD>
<TD>
<P>指定存放非类生成的文件的路径</P></TD></TR>
<TR>
<TD>
<P>-O </P></TD>
<TD>
<P>优化生成的代码</P></TD></TR>
<TR>
<TD>
<P>-s <directory> </P></TD>
<TD>
<P>指定存放生成的源文件的路径</P></TD></TR>
<TR>
<TD>
<P>-verbose </P></TD>
<TD>
<P>输出编译器正在完成的工作的消息</P></TD></TR>
<TR>
<TD>
<P>-version </P></TD>
<TD>
<P>打印版本信息</P></TD></TR></TBODY></TABLE>
<P class=0755>下表列除了-f 选项的属性清单(由逗号间隔)。</P>
<P><I>表11-4 wscompile的-f属性</I></P>
<TABLE cellPadding=0 border=1>
<TBODY>
<TR>
<TD>
<P style="TEXT-ALIGN: center"
align=center><B>属性</B></P></TD>
<TD>
<P style="TEXT-ALIGN: center"
align=center><B>说明</B></P></TD></TR>
<TR>
<TD>
<P>datahandleronly </P></TD>
<TD>
<P>总是将附件映射成DataHandler类型</P></TD></TR>
<TR>
<TD>
<P>explicitcontext </P></TD>
<TD>
<P>打开显式服务上下文映射</P></TD></TR>
<TR>
<TD>
<P>infix=<name> </P></TD>
<TD>
<P>为生成的序列化指定使用的中缀</P></TD></TR>
<TR>
<TD>
<P>nodatabinding </P></TD>
<TD>
<P>为文字编码关闭数据库绑定</P></TD></TR>
<TR>
<TD>
<P>noencodedtypes </P></TD>
<TD>
<P>关闭编码类型信息</P></TD></TR>
<TR>
<TD>
<P>nomultirefs </P></TD>
<TD>
<P>关闭对多引用的支持</P></TD></TR>
<TR>
<TD>
<P>novalidation </P></TD>
<TD>
<P>关闭导入文档的完全合法性验证</P></TD></TR>
<TR>
<TD>
<P>searchschema </P></TD>
<TD>
<P>主动的查找子类型的模式</P></TD></TR>
<TR>
<TD>
<P>serializeinterfaces </P></TD>
<TD>
<P>打开直接的接口类型的序列化</P></TD></TR></TBODY></TABLE>
<H4> </H4>
<H4><B><A name=pei></A>配置文件</B></H4>
<P>wscompile读取包含描述web服务信息的配置文件(config.xml)。config.xml文件的基本结构如下:</P>
<BLOCKQUOTE>
<P><?xml
versiton=”1.0”<BR>encoding=”UTF-8”?><BR><configuration<BR>
xmlns=http://java.sun.com/xml/ns/jax-rpc/ri/config><BR>
<service> or <wsdl> or <modelfile>
</configuration> </P></BLOCKQUOTE>
<P><configuration>元素可以完全地包含一个<service>、<wsdl>或者<modelifle>元素。
</P>
<P><B><service>元素</B> </P>
<P>如果具体地指定了该元素,wscompile读取描述了该服务的RMI接口,生成一个WSDL文件。在<Interface>子元素中,name属性指定服务的RMI接口,而servantName属性指定了实现这一接口的类。例如:</P>
<BLOCKQUOTE>
<P><service
name="CollectionIF_Service"<BR>
targetNamespace="http://echoservice.org/wsdl"<BR>
typeNamespace="http://echoservice.org/types"
packageName="stub_tie_generator_test"><BR>
<interface
name="stub_tie_generator_test.CollectionIF"<BR>servantName="stub_tie_generator_test.CollectionImpl"/>
</service> </P></BLOCKQUOTE>
<P><B><wsdl></B><B>元素</B> </P>
<P>如果指定了该元素,wscompile读取服务的WSDL文件,然后生成服务的RMI接口。Location属性指定WSDL文件的URL,而packageName属性指定由wscompile生成的类的包。例如:
</P>
<BLOCKQUOTE>
<P><wsdl<BR>
location=http://tempuri.org/sample.wsdl<BR>
packageName=”org.tempuri.sample”/> </P></BLOCKQUOTE>
<P><B><modelfile>元素</B> </P>
<P>该元素是针对高级用户的。
如果config.xml文件包含<service>或<wsdl>元素,wscompile生成包含描述服务的内部数据结构的模型文件。如果已经以这种方式成生了模型文件,下一次运行wscompile时可以再次使用该模型文件。例如:
<modelfile location=”mymodel.xml.gz”/> </P>
<H2><A name=wsdeploy></A>w<FONT size=4>sdeploy工具</FONT></H2>
<P>wsdeploy工具读取一个WAR文件和jaxrpc-ri.xml文件,然后生成另一个可部署的WAR文件。背后,wsdeploy运行了带有-gen:server选项的wscompile。该wscompile命令生成包含在由wsdeploy生成的WAR文件中的类和WSDL文件。
<B>语法</B> wsdeploy的语法如下: wsdeploy <options>
<input-war-file> 下表列出了工具的选项。注意-o选项是必需的。 </P>
<P><I>表11-5 wsdeploy选项</I> </P>
<TABLE cellPadding=0 border=1>
<TBODY>
<TR>
<TD>
<P align=center><B>选项</B></P></TD>
<TD>
<P align=center><B>说明</B></P></TD></TR>
<TR>
<TD>
<P>-classpath <path> </P></TD>
<TD>
<P>指定可选的classpath</P></TD></TR>
<TR>
<TD>
<P>-keep </P></TD>
<TD>
<P>保存临时文件</P></TD></TR>
<TR>
<TD>
<P>-o <output-war-file> </P></TD>
<TD>
<P>指定生成的war文件存放的路径</P></TD></TR>
<TR>
<TD>
<P>-tmpdir <directory> </P></TD>
<TD>
<P>指定使用的临时目录</P></TD></TR>
<TR>
<TD>
<P>-verbose </P></TD>
<TD>
<P>输出编译器正完成的工作的消息</P></TD></TR>
<TR>
<TD>
<P>-version </P></TD>
<TD>
<P>打印版本信息</P></TD></TR></TBODY></TABLE>
<P><B>输入WAR文件</B> </P>
<P>通常使用GUI开发工具或ant 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组件的部署描述。Jaxrpc-ri.xml文件将在下面部分进行说明。
</P>
<P><B><A name=jaxrpcri></A>jaxrpc-ri.xml文件</B> </P>
<P>下面的清单显示了一个简单的HelloWold服务的jaxrpc-ri.xml文件。</P>
<P><webService>元素必须包含一个或多个<endpoint>元素。在该例中,注意<endpoint>的interface和implementation属性指定了服务的接口和实现类。<endpointMapping>元素把服务端口和接在urlPatternBase后面的endpoint
URL路径部分联系起来。</P>
<BLOCKQUOTE>
<P> <?xml
version="1.0"
encoding="UTF-8"?><BR>
<webServices
xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd"
version="1.0"<BR>targetNamespaceBase="http://com.test/wsdl"<BR>typeNamespaceBase="http://com.test/types"
urlPatternBase="/ws">
<endpoint<BR> name="MyHello"<BR> displayName="HelloWorld
Service" <BR> description="A
simple web
service" <BR> interface="hello.HelloIF" <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -