2012-09-12 22 views
18

RSA 7.5 ve Websphere 7 sunucusunu kullanarak bir IBM JAX_WS web hizmeti geliştirmeye çalışıyorum. Yeni başlayan biri olduğum için, Java sınıfındaki ilk yaklaşımı takip ediyorum, yani önce Java sınıflarını oluşturuyorum ve ardından WSDL dosyasını oluşturuyorum.IllegalAnnotationsException: Sınıfın aynı adı taşıyan iki özelliğe sahip

java.security.PrivilegedActionException: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: IllegalAnnotationsException 1 sayımları

i wsdl dosyası oluşturmak için denemek

i istisna alıyorum

public class MemberDetails{ 
    @XMLElement(required=true) 
    private String planId; 
    //public getters and setters for the planId; 
} 

Ben bir fikrin yok: sınıf

burada işaret edilen My sınıf şuna benzer aynı adı "planId" iki özelliği vardır Bu istisna niye oluyor gibi. Google araması ile bunu çözmek için birkaç alternatif çalıştı ama bunların hiçbiri beni :(çalıştı

Not:.

Bu benim çalışma alanı boyunca kullanıyorum tek ek açıklama ise bu emin değilim bazı ek açıklamalara bağlıdır ya da değil.Ama @ XMLElement (name = "Plan", gerekli = true), @ XMLType, vb gibi her zaman bu istisna alıyorum her zaman denedim.

Bu istisna wsgen sırasında meydana gelir (java.lang.reflect.InvocationTargetException)

biz java servis yönteminden bir wsdl oluşturmak ve SOAP UI o WSDL açtığınızda

DÜZENLEME

Temelde, o zaman her elemanın üst kısmında <!--Optional--> olsun. Bu seçenek etiketi <!--Optional--> etiketini kaldırmak istiyorum, bu yüzden @XMLElement (required = true) yaklaşımını deniyorum, çünkü WSAPL'yi SOAP UI'de açtığımda <!--Optional--> zorlayıcı öğeler için görünmüyor.

Kavramıma göre, @XMLElement (required = true), minOccurs değerini 1'den büyük olacak şekilde sıfırdan büyük olacak ve dolayısıyla SOAP UI'de açtığımda isteğe bağlı yorum WSDL'den kaldırılacaktır. Ama maalesef çalışmıyor çünkü benim konseptim yanlış. WSDL oluşturulduktan sonra, minOccurs öğesinin hala 0 olduğunu görebiliriz.

Lütfen, SOAP UI'de WSDL'yi açtığımda isteğe bağlı etiketi nasıl kaldıracağımı açıklayın. Varsayılan olarak

Selamlar,

cevap

37

JAXB (JSR-222) uygulamaları kamu erişimci yöntem ve açıklamalı alanları işlemek.Bu durum alacak için sen de/set yöntemlerini almak olan bir alan açıklama ise: o zaman alanları açıklama yapacaksanız

Eğer @XmlAccessorType(XmlAccessType.FIELD)

@XmlAccessorType(XmlAccessType.FIELD) 
public class MemberDetails{ 
    @XMLElement(required=true) 
    private String planId; 
    //public getters and setters for the planId; 
} 

belirtmelidir Yoksa özelliği açıklama olabilir

Ayrıntılı Bilgi için
public class MemberDetails{ 

    private String planId; 

    @XMLElement(required=true) 
    public String getPlanId() { 
     return planId; 
    } 
} 

+0

Yanıt için teşekkürler. Önerdiğiniz gibi, WSDL herhangi bir wsgen istisnası olmadan yaratılıyor. Ama hedefim ulaşılamıyor. Herhangi bir neden elde etmeye çalıştığımı açıklamak için yukarıdaki yazıyı düzenledim. Lütfen 1. gönderinin düzenlenmiş bölümüne bir göz atın ve yardım edin. – user182944

+1

iyi açıkladı. – lwpro2

İlgili konular