書き込みへのJava Webサービス・インタフェース

需要があります:Macの機器と端末機器の種類に応じて在庫状況を照会するために必要な設備は。
ウェブサービスインターフェースプロトコルは、プロトコル、情報対話的にXMLフォーマット情報を使用することです

入力パラメータは、各ノードのXMLで保存し、そして入力パラメータインタフェースとして、文字列に変換されます。XMLのカプセル化形式は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<MSG_CONTENT>
< DEVICE_MAC></ DEVICE_MAC> 
< DEVICE_TYPE></ DEVICE_TYPE> 
</MSG_CONTENT>
</ROOT>

出力パラメータは、各ノードのXMLに格納され、および出力パラメータのインターフェースとして、文字列に変換されます。XMLのカプセル化形式は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
  < RESULT_CODE >返回编码</ RESULT_CODE >
  < RESULT_MSG >失败描述</ RESULT_MSG >
  <STATE>终端状态</STATE>
  <IS_EXIST>终端是否存在</IS_EXIST>
<OWNER_CITY>终端归属地市</OWNER_CITY>
</ROOT>

Webサービスは、サードパーティのサービスと同様のクロスプラットフォーム、クロス言語サービス、である、あなたが呼び出しに他の人のためのインターフェースを書き、あなたはパーティーを提供している、Webサービスです。インターフェースは、サービス・インターフェースを提供するために使用されるコレクション、関数のグループです。

書き込みのJava Webサービス・インタフェース、インタフェースクラスにマークする必要があり@WebServiceの、これはWebサービスであることをノート、@WebParam(名前=「device_MAC」)このコメントは、メソッドのパラメータにマークされている取得したパラメータ注釈カスタマイズを表しますマッピング手段とXML Webサービスのメッセージ要素への単一のパラメータ。
例えば:

@WebService
public interface qryIptvStateService {
    //根据设备mac和设备类型查询库存状态信息
    String qryIptvState(@WebParam(name = "DEVICE_MAC") String DEVICE_MAC);
}

今、このインターフェイスが実装され
て、endpointInterfaceを:フルパスインタフェースサービス、SEIを行う指定(サービス・エンドポイント・インタフェース)サービスエンドポイントインタフェース
serviceNameを:WSDL:サービス名を離したことを示します(つまり、ドキュメントインターフェイスメソッド名)、Webサービスのサービス名を指定します。サービス。デフォルトでは、Javaクラス+サービスの単純名です。

@WebService(endpointInterface = "intf.zznode.device.qryIptvStateService", serviceName = "qryIptvState")
public class qryIptvStateServiceImpl extends BaseService implements qryIptvStateService {
    @Override
    public String qryIptvState(String xml) {
        //业务代码
    }
}

今JavaのビルドXML文書のノードを使用して起動する
ような構造のXMLドキュメントを構築するために、例えば

<ROOT>
<MSG_CONTENT>
< DEVICE_MAC></ DEVICE_MAC> 
< DEVICE_TYPE></ DEVICE_TYPE> 
</MSG_CONTENT>
</ROOT>

主な役割は、JavaオブジェクトとXMLファイルのノード要素間の移行を促進することである
@XmlRootElement(名=「ROOT」)は ROOTという名前のXML文書のルート要素を表し、このコメントのJavaクラスにマークされますが。

@XmlRootElement(name = "ROOT")
public class ROOTStoreInfo {
    //root下面的msg_content元素
    private StoreMsgContent MSG_CONTENT;
    //setter/getter方法
}
public class StoreMsgContent {
    private String DEVICE_MAC;
    private String DEVICE_TYPE;
    //setter/getter方法
}
最终构建出来的xml文档为
<ROOT>
<MSG_CONTENT>
< DEVICE_MAC></ DEVICE_MAC> 
< DEVICE_TYPE></ DEVICE_TYPE> 
</MSG_CONTENT>
</ROOT>
//最后需要将传入的xml格式的字符串映射解析为java类
public static <T> T xml2Object(String xmlStr, Class<T> c) {
        try {
            // JAXB(即Java Architecturefor XML Binding)是一个业界的标准,
            //即是一项可以根据XML Schema产生Java类的技术。
            //该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,
            //并能将Java对象树的内容重新写到XML实例文档。
            JAXBContext context = JAXBContext.newInstance(c);
            Unmarshaller unmarshaller = context.createUnmarshaller();

            T t = (T) unmarshaller.unmarshal(new StringReader(xmlStr));
            return t;

        } catch (JAXBException e) {
            e.printStackTrace();
            return null;
        }
    }

可能今すぐJavaクラスを使用してXML形式のドキュメントノード情報を構築するための、および@XmlRootElementクラスをマークされて入ってくるデータマッピングxml形式の文字を形成することができます。
今動作して結果が返さする必要があります。

//用于响应返回的xml文档信息
//@XmlType 注解 propOrder的值是一个字符串数组,用来设置xml文档节点的顺序
@XmlRootElement(name = "ROOT")
@XmlType(propOrder = {"RESULT_CODE", "RESULT_MSG", "STATE", "IS_EXIST", "OWNER_CITY","OTT_STB_ID"})
public class ROOTStoreInfoRespone {
    private String RESULT_CODE;//返回编码:1成功,0失败
    private String RESULT_MSG;//失败描述,RESULT_CODE为0必填
    private String STATE;//终端设备状态,RESULT_CODE为1必填
    private String IS_EXIST;//终端设备是否存在:1存在,0不存在
    private String OWNER_CITY;//终端归属地市,IS_EXIST为1时必填
    private String OTT_STB_ID;//OTT序列号sn
    //setter/getter方法
}
//用于将java类转换为xml格式
public static String getXml(ROOTStoreInfoRespone root) {
        StringWriter wr = new StringWriter();
        try {
            //JAXBContext将java类与xml文档相互转换
            JAXBContext context = JAXBContext.newInstance(ROOTStoreInfoRespone.class);
            //使用Marshaller生成xml文件
            Marshaller mar = context.createMarshaller();
            //格式化xml格式
            mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            //去掉生成xml的默认报文头
            // mar.setProperty(Marshaller.JAXB_FRAGMENT, true);

            mar.marshal(root, wr);
            return wr.toString().replace("standalone=\"yes\"", "");
        } catch (JAXBException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

//调用
getXml(rootStoreInfoRespone)

概要:
Javaの書き込みWebサービスパーツ
@WebServiceのインターフェース・クラスに注釈を付けるために使用される注釈、これはWebサービスであることを示しています。
@WebParam(名=「DEVICE_MAC」)注釈標識のために使用されるパラメータ、および同じノード要素名XMLに渡されたパラメータは、ノードの値です。
@WebService(は、endpointInterface =「intf.zznode.device.qryIptvStateService」、 serviceNameを=「qryIptvState」)は、 Webサービス実装クラスが実装するインタフェースを指定するために使用されます。
endpointInterfaceは、インタフェースクラスの完全なパスを表し、serviceNameをするWebサービスは、外部に設けられたメソッドの名前を表します。
Javaのビルドと解析XML部分の
@XmlRootElement(名=「ROOT」)は、 ROOTという名前のXML文書のルート要素を表し、このコメントのJavaクラスにマークされます。クラスのプロパティは、XML要素のノードです。
@XmlType(propOrder = { "RESULT_CODE" 、 "RESULT_MSG"、 "状態"、 "IS_EXIST"、 "OWNER_CITY"、 "OTT_STB_ID" }) タイプがXMLであることを示します。
propOrderそれはXML要素内のノードの配列を表し、文字の配列です。
xml形式の文字列は、Javaクラスがマッピングされている
XMLのJavaクラスファイル形式を解析します。

開発は、このような要求をした主なタスクは、それをここにWebサービスのために記録されていると非常に慣れていないですが、また、学習を強化します。

おすすめ

転載: www.cnblogs.com/jasonboren/p/11870054.html