首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

axis2集成保险和jibx

2012-07-27 
axis2集成安全和jibx1.先写服务类,内容如下:public class StockQuoteService {??? private HashMap map

axis2集成安全和jibx

1.先写服务类,内容如下:

public class StockQuoteService {
??? private HashMap map = new HashMap();

??? public Man getPrice(String symbol) {
??????? Double price = (Double) map.get(symbol);
??????? Man man = new Man(42.2);
??????? man.setName("kevin");
??????? man.setSex("man");
?
??????? return man;
??? }

??? public void update(String symbol, double price) {
??????? map.put(symbol, new Double(price));
??? }
}

?

2.用ant生成wsdl,xsd,binding.xml,内容如下:

<project name="quickstart" basedir="." default="generate-wsdl">
?<property name="jibx-home" value="C:\Users\Kevin\Downloads\jibx_1_2_3\jibx" />

?<path id="jibx-classpath">
??<fileset dir="${jibx-home}/lib" includes="**/*.jar" />
??<pathelement location="bin" />
?</path>

?<!-- Generate bindings, schemas, and WSDL -->
?<target name="generate-wsdl">
??<delete quiet="true" dir="${basedir}/gen" />
??<mkdir dir="${basedir}/gen" />
??<echo message="Running Jibx2Wsdl tool" />
??<java classpathref="jibx-classpath" classname="org.jibx.ws.wsdl.tools.Jibx2Wsdl" fork="true" failonerror="true">
???<arg value="-p" />
???<arg value="target/classes" />
???<arg value="-s" />
???<arg value="src/main/java" />
???<arg value="-t" />
???<arg value="${basedir}/gen" />
???<arg value="--strip-prefixes=ns" />
???<arg value="com.kevin.StockQuoteService" />
??</java>
?</target>
</project>

?

3.用ant生成service代码,ant内容如下:

<project name="quickstart" basedir="." default="generate.wsdl">
?<property environment="env" />
?<property name="project.home" value="src/main/webapp" />
?<property name="resource.path" value="src/main/resources" />
?<property name="build.dir" value="target" />

?<path id="axis2.classpath">
??<fileset dir="${project.home}/WEB-INF/lib">
???<include name="*.jar" />
??</fileset>
?</path>

?<path id="client.lib">
??<fileset dir="lib">
???<include name="*.jar" />
??</fileset>
?</path>

?<target name="generate.wsdl">
??<java classname="org.apache.ws.java2wsdl.Java2WSDL" fork="true" classpathref="axis2.classpath">
???<arg line="-cp target/classes" />
???<arg line="-cn com.kevin.StockQuoteService" />
???<arg line="-of ${resource.path}/META-INF/StockQuoteService.wsdl" />
??</java>
?</target>

?<target name="generate.service">
??<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true" classpathref="client.lib">
???<arg line="-s" />
???<arg line="-ss" />
???<arg line="-uw" />
???<arg line="-sd" />
???<arg line="-ssi" />
???<arg line="-ap" />
???<arg line="-S" />
???<arg line="-l java" />
???<arg line="-p com.kevin.service" />
???<arg line="-d jibx" />
???<arg line="-noBuildXML" />
???<arg line="-o src/main/java" />
???<arg line="-sp" />
???<arg line="-Ebindingfile ${resource.path}/META-INF/binding.xml" />
???<arg line="-uri ${resource.path}/META-INF/StockQuoteService.wsdl" />
??</java>
??<delete dir="src/main/java/resources" />
?</target>

?<target name="generate.aar">
??<jar destfile="${project.home}/WEB-INF/services/StockQuoteService.aar">
???<fileset excludes="**/Test.class, *.properties" dir="${build.dir}/classes">
???</fileset>
??</jar>
?</target>

?<target name="generate.client">
??<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true" classpathref="client.lib">
???<arg line="-S" />
???<arg line="-s" />
???<arg line="-uw" />
???<arg line="-noBuildXML" />
???<arg line="-p com.kevin.client" />
???<arg line="-d jibx" />
???<arg line="-o src/main/java" />
???<arg line="-sp" />
???<arg line="-Ebindingfile ${resource.path}/META-INF/binding.xml" />
???<arg line="-uri ${resource.path}/META-INF/StockQuoteService.wsdl" />
??</java>
?</target>
</project>

4.在生成的service代码中,在类StockQuoteServiceSkeleton中加入业务代码,参照StockQuoteService.

?

5.增加service.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<service name="StockQuoteService" scope="application">
?<description>
??Stock Quote Sample Service
??? </description>
?<messageReceivers>
??<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
???/>
?</messageReceivers>
?<parameter name="ServiceClass">
??com.kevin.service.StockQuoteServiceSkeleton
??? </parameter>

?<module ref="rampart" />
?<module ref="addressing" />

?<wsp:Policy wsu:Id="UTOverTransport"
??xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
??xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
??<wsp:ExactlyOne>
???<wsp:All>
????<sp:TransportBinding
?????xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
?????<wsp:Policy>
??????<sp:TransportToken>
???????<wsp:Policy>
????????<sp:HttpsToken RequireClientCertificate="false" />
???????</wsp:Policy>
??????</sp:TransportToken>
??????<sp:AlgorithmSuite>
???????<wsp:Policy>
????????<sp:Basic128 />
???????</wsp:Policy>
??????</sp:AlgorithmSuite>
??????<sp:Layout>
???????<wsp:Policy>
????????<sp:Lax />
???????</wsp:Policy>
??????</sp:Layout>
??????<sp:IncludeTimestamp />
?????</wsp:Policy>
????</sp:TransportBinding>
????<sp:SignedSupportingTokens
?????xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
?????<wsp:Policy>
??????<sp:UsernameToken
???????sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
?????</wsp:Policy>
????</sp:SignedSupportingTokens>

????<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
?????<ramp:passwordCallbackClass>com.kevin.PWCBHandler</ramp:passwordCallbackClass>
????</ramp:RampartConfig>

???</wsp:All>
??</wsp:ExactlyOne>
?</wsp:Policy>

</service>

6.生成aar文件,可以不包含*.class文件,拷至WEB-INF/services文件夹中。

?

7.生成client文件,并拷至client端。

?

8.客户端调用程序:

public static void main(String[] args) {
??try {
???ConfigurationContext ctx = ConfigurationContextFactory
?????.createConfigurationContextFromFileSystem(
???????"src/main/webapp/WEB-INF", null);

???StockQuoteServiceStub stub = new StockQuoteServiceStub(ctx,
?????"https://localhost:8443/axis2/services/StockQuoteService");
???ServiceClient sc = stub._getServiceClient();
???Options options = sc.getOptions();
???options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,
?????loadPolicy("policy.xml"));
???sc.setOptions(options);

???sc.engageModule("addressing");
???sc.engageModule("rampart");
???
???getPrice(stub);
//???update(stub);
//???getPrice(stub);

??} catch (Exception e) {
???e.printStackTrace();
??}
?}
?
?public static void getPrice(StockQuoteServiceStub stub) {
??try {
???Man man = stub.getPrice("CDE");
???
???System.out.println(man.getName());
???System.out.println(man.getSex());
???System.out.println(man.getPrice());
??} catch (Exception e) {
???e.printStackTrace();
???System.err.println("\n\n\n");
??}
?}

?public static void update(StockQuoteServiceStub stub) {
??try {
???stub.update("CDE", new Double(42.35));
???System.err.println("price updated");
??} catch (Exception e) {
???e.printStackTrace();
???System.err.println("\n\n\n");
??}
?}

?private static Policy loadPolicy(String xmlPath) throws Exception {
??StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
??return PolicyEngine.getPolicy(builder.getDocumentElement());
?}

?

9.其中policy.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<wsp:Policy wsu:Id="UTOverTransport" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
?<wsp:ExactlyOne>
?? <wsp:All>
??<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
??? <wsp:Policy>
???<sp:TransportToken>
???? <wsp:Policy>
????<sp:HttpsToken RequireClientCertificate="false"/>
???? </wsp:Policy>
???</sp:TransportToken>
???<sp:AlgorithmSuite>
???? <wsp:Policy>
????<sp:Basic128/>
???? </wsp:Policy>
???</sp:AlgorithmSuite>
???<sp:Layout>
???? <wsp:Policy>
????<sp:Lax/>
???? </wsp:Policy>
???</sp:Layout>
???<sp:IncludeTimestamp/>
??? </wsp:Policy>
??</sp:TransportBinding>
??<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
???<wsp:Policy>
????<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
??? </wsp:Policy>
??</sp:SignedSupportingTokens>
??
??<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
???<ramp:user>alice</ramp:user>
???<ramp:passwordCallbackClass>com.kevin.client.PWCBHandler</ramp:passwordCallbackClass>
???<ramp:sslConfig>
?????<ramp:property name="javax.net.ssl.trustStore">client.jks</ramp:property>
??????? ???<ramp:property name="javax.net.ssl.trustStorePassword">apache</ramp:property>
???</ramp:sslConfig>
??</ramp:RampartConfig>
??
?? </wsp:All>
?</wsp:ExactlyOne>
</wsp:Policy>

?

热点排行