0
私はJavaで単純なSOAPサービスを実装しています。私は、2つの機能を持つシンプルなビジネスレイヤークラスを持っています:すべての製品名を取得し、もう1つは製品価格を取得します。JavaのSOAPサービスでdouble値を返す方法は?
私は、製品データを初期化してビジネスレイヤに送信し、ビジネスレイヤのメソッドを呼び出すサービスレイヤクラスを持っています。
クラスを通常のJavaアプリケーションとしてテストすると、すべての関数が動作し、getPriceが製品の価格(10.00、15.00、または18.00)を返します。しかし、WebサービスとしてデプロイしてSOAPクライアントまたはGlassfishテスターのGUIでテストしようとすると、get priceの関数は常に0.0を返します(これは製品の価格を返しません)。ここで
は、BLコードです:
package SLayer;
import java.util.*;
import BLayer.*;
import javax.jws.*;
@WebService(serviceName="MyProdService")
public class ProdService{
HashMap<String, Double> prods ;
ProdBL bl;
@WebMethod(operationName="intiliazeProducts")
public String init(){
this.prods = new HashMap<String, Double>();
this.prods.put("A",10.00);
this.prods.put("V",15.00);
this.prods.put("D",18.00);
this.bl = new ProdBL(prods);
return "Products Initilzed";
}
@WebMethod(operationName="getProdNames")
public String getNames(){
String s ="";
s = bl.getNames();
return s;
}
@WebMethod(operationName="getProdPrice")
public double getProdPrice(String name){
double price =0.0;
// ProdBL blp = new ProdBL(prods);
price= bl.getPrice(name);
return price;
}
}
Clientクラス:
ここpackage BLayer;
import java.util.*;
public class ProdBL{
HashMap<String, Double> prods ;
public ProdBL(HashMap<String, Double> prods){
this.prods = prods;
}
public String getNames(){
String s ="";
for(Map.Entry<String, Double> e: prods.entrySet()){
s+= e.getKey();
}
return s;
}
public double getPrice(String name){
double s =0.0;
for(Map.Entry<String, Double> e: prods.entrySet()){
if(e.getKey() == name) {
s = e.getValue();
}
}
return s;
}
}
は、サービス層のコードがあるのに対しによりgetNames()
import proxies.*;
public class Client{
public static void main(String[] args){
MyProdService s = new MyProdService();
ProdService port = s.getProdServicePort();
try{
port.intiliazeProducts();
System.out.println(port.getProdNames());
port.intiliazeProducts();
System.out.println(port.getProdPrice("A"));
}catch(Exception e){
e.getMessage();
}
}
}
なぜgetProdPriceは常に、0.0を返しませんうまくいく?これはSOAP UIやGlassfishでテストした場合でも発生します。
文字列を '==' –
と比較しています。私はそれが実行され、通常のJavaアプリケーションで動作するため、私はWebサービスの間違いを探していた。ありがとう^ _ ^。 –
問題はタイトルにあります。 ***あなたはお金のために浮動小数点を使用しないでください***。 10進数を使用します。 – EJP