1

フォーム (別のグループによって開発された) からの XML 入力を受け入れることができないという点で、Java Web サービスに問題があります。

このようなサービスを使用したことがないため、正しくセットアップしたかどうかがわかりません。現在、接続したいだけなので、メソッドは空です。

package com.what.service;

import java.io.File;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.swing.text.*;



@WebService

public class HouseGetForm {

    @WebMethod
    public String getRooms(String rooms) { 
        return "Number of Rooms: " + rooms;
    }

    @WebMethod
    public String getHouseType(String house) {
        return "House Type " + house;
    }

    @WebMethod
    public String getKitchenAppliances(String appliance) {
        return "Appliances " + appliance;
    }

また、チュートリアルからほぼ直接取得した「サーバー」クラスもあります。

package com.what.service;

import javax.xml.ws.Endpoint;


public class Server {

    public static void main(String[] args) {

        Endpoint.publish("http://localhost:9898/HouseGetForm", new HouseGetForm());

        System.out.println("House Get form Initailised.");

        System.out.println("Server Started...");


    }

}

ほら、プロセス全体がどのように機能するかよくわからないので、暗闇の中で少しつまずいています。フォームが送信されると、XML はどのように配信されますか? Web サービスで個々のフィールド値を見つける必要があるドキュメント全体として? もしそうなら、これはどのように行われますか?

Java Web サービスで XML 入力 (フォーム データ) を取得し、それを Java Web サービス メソッドで操作する方法を、文字通り素人の言葉で知る必要があります。

4

2 に答える 2

3

このようなサービスを使用したことがないため、正しくセットアップしたかどうかがわかりません。現在、接続したいだけなので、メソッドは空です。

これについては、REST jersey ライブラリ チュートリアルを参照することをお勧めします。この記事を読んでください


したがって、基本的には、フォームが HTML ファイルではなく HTTP 経由で XML ファイルを送信することになります。Web サービス クライアント (REST) 経由で XML データを受信する場合。メソッドを宣言する必要があります

消費する

XML データ。例えば

@WebMethod
@Consumes("application/xml")
@Produces("application/xml")
public String test(String xmlData){
  System.out.println(xmlData); //reads xml data
  returns "<?xml version="1.0" encoding="ISO-8859-1"?><note>Hello!</note>"; //this will display the legit XML file on to browser instead of HTML document
}

ブラウザに表示される正規の xml ファイルの例

さらに、 JAXBと呼ばれる強力なライブラリを使用して、この xmlData を取得し、すぐに JavaBean オブジェクトに変換できます。また、全体的に何が起こっているかをお見せしましょう(これがあなたが求めていることだと思います)

ここに Web メソッドがあります。これは、クライアントが Web サービスを使用したい場合に呼び出すものです。

@WebMethod
@Consumes("application/xml")
@Produces("application/xml")
public String test(Person person){
  System.out.println(person.getFirstName()); //reads xml data
  returns "<?xml version="1.0" encoding="ISO-8859-1"?><note>Hello!</note>"; //this will display the legit XML file on to browser instead of HTML document
}

クライアントから送信された person の XML データの例を次に示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Person>
   <firstName>Temp</firstName>
   <lastName>Nick</lastName>
</Person>

このファイルがメソッド test(Person person) に到達すると; JAXB を使用すると、この XML データは以下の Person オブジェクトに変換されます

  @XmlRootElement
    public class Person {
      private String firstName;
      private String lastName;

      public String getFirstName(){
        return fristName;
      }
      @XmlElement
      public void setFirstName(String firstName) {
         this.firstName = firstName;
      }

     //another getter and setter for lastName

  }
于 2013-01-30T11:08:50.487 に答える
0

フォーム データは、エンコードされた HTTP として配信されます。

あなたの XML は HTTP POST 経由で送られてくるはずです。アプリを起動し、Chrome などのブラウザーでページを開き、Wireshark をオンにして、ネットワーク上で何が送信されているかを確認します。

それがわかれば、HTTP 要求から XML を抽出し、それを Java オブジェクトにシリアライズする必要があることに気付くでしょう。そのようなことをするためにJAXBが好きな人もいます。

于 2013-01-30T11:00:56.397 に答える