JAX-WS web hizmetini GET kullanarak dizi parametresiyle çağırmak

İki param, bir int ve bir String [] dizisi kabul eden "diagnosticPing" adlı bir CXF JAX-WS web hizmeti işlemi var. Wsdl'den:



Bu işlemi doğrudan bir tarayıcıdan denemek ve çağırmak istiyorum, çünkü bu, SoapUI gibi bir araca gerek kalmadan servisi "ping" etmenin yararlı bir yolu olurdu. Ancak, sorgu dizgimi nasıl oluşturacağımı anlayamıyorum, böylece hizmet String [] array param değerini tanıyacaktır. En iyi denemem, şöyle bir şeydi:

https://hostname/ServiceUri/service/diagnosticPing?depth=2&instructions=%22accountType%3DABC%22,%22action%3DgetDetails%22,%22version%3D1.0%22}

Ama böyle bir hata aldım:

public java.util.List çağrılırken

argüman türü uyuşmazlığı   ca.gwl.group.account.service.routing.AccountServiceRouter.diagnosticPing (int, java.lang.String []) params [2, {"accountType = ABC", "action = getDetails", "version = 1.0"} ].

Herhangi bir dize dizisi olarak kabul edilecek bir sorgu dizgesi param ile web hizmetini nasıl çağırmak için herhangi bir fikri var mı?

0
Sadece bir boyutlu dize dizisi, yani bir java.lang.String [] olduğunu unutmayın.
katma yazar Michael Lucas, kaynak

1 cevap

Bir yol gibi görünmüyor. Ona bakmak isterseniz, CXF URIMappingInterceptor'a girebilirsiniz. Orada bir yöntem var:

private Object readType(String value, Class type)

koleksiyonları ve dizileri işlemek için güncellenmesi gerekir. Yamalar kabul edilir.

:-)

1
katma
Özel bir engelleyici oluşturarak ve gerekli noktaya zincire takarak da yapılabilir mi? Bu işlevselliği, CXF'ye yamalamadan iş uygulamasında bu işlevselliği dahil etmenin ve test etmenin iyi bir yolu olabilir, ancak daha sonra yamaya katkıda bulunmaktan memnuniyet duyarım. Ancak, özel bir önleyicinin bunu çözmek için ne kadar uygun olduğundan emin değilim (sadece CXF ile temel şeyler yapıldı).
katma yazar Michael Lucas, kaynak