Webservice异常潜在原因
Webservice exception potential causes
我遇到以下异常,但无法找出导致它的原因。调用 getSlownikiOfflinePort 方法时抛出以下异常。
@WebEndpoint(name = "SlownikiOfflinePort")
public SlownikiOffline getSlownikiOfflinePort() {
return super.getPort(new QName("http://gugik.gov.pl/schemas/slowniki-offline-service/1.0", "SlownikiOfflinePort"), SlownikiOffline.class);
}
super class is javax.xml.ws.Service for this method is
javax.xml.ws.WebServiceException: class pl.package.OfflineService.PobierzPelne do not have a property of the name {http://gugik.gov.pl/schemas/slowniki-offline-service/1.0}teryt
at com.sun.xml.ws.client.sei.BodyBuilder$DocLit.<init>(BodyBuilder.java:245) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.sei.StubHandler.<init>(StubHandler.java:132) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingImpl.initStubHandlers(DatabindingImpl.java:162) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingImpl.<init>(DatabindingImpl.java:107) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:74) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:58) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingFactoryImpl.createRuntime(DatabindingFactoryImpl.java:120) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.buildRuntimeModel(WSServiceDelegate.java:882) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.createSEIPortInfo(WSServiceDelegate.java:899) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:862) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:451) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:420) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:402) ~[jaxws-rt.jar:2.3.1]
at javax.xml.ws.Service.getPort(Service.java:169) ~[jaxws-api.jar:na]
at pl.package.OfflineService.getOfflinePort(SlownikiOfflineService.java:72) ~[classes/:na]
..............................................................................................................................................................................................
Caused by: javax.xml.bind.JAXBException: {http://gugik.gov.pl/schemas/slowniki-offline-service/1.0}teryt is not a valid property on class pl.package.OfflineService.PobierzPelne
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:960) ~[jaxb-runtime.jar:2.3.1]
at com.sun.xml.ws.db.glassfish.JAXBRIContextWrapper.getElementPropertyAccessor(JAXBRIContextWrapper.java:121) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.sei.BodyBuilder$DocLit.<init>(BodyBuilder.java:242) ~[jaxws-rt.jar:2.3.1]
... 107 common frames omitted
出于某种原因,{http://gugik.gov.pl/schemas/slowniki-offline-service/1.0}(服务地址)被添加到 属性 名称中,仅用于此 class,这会导致异常。
问题是这个 class 是从 WSDL 和其他 classes 一起生成的,并且由于某种原因是唯一导致该异常或将服务地址附加到它的 属性 姓名。由于它是库代码中抛出的异常,我无法处理或修改它(在调试模式下从 属性 名称中删除地址使其在 Intellij 代码评估工具中工作)。
class代码导致异常:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "pobierzPelne", propOrder = {
"teryt"
})
public class PobierzPelne {
@XmlElement(required = true)
protected String teryt;
/**
* Gets the value of the teryt property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTeryt() {
return teryt;
}
/**
* Sets the value of the teryt property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTeryt(String value) {
this.teryt = value;
}
}
这里是 class 不会引发异常的代码之一:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "pobierzUlice", propOrder = {
"iipPn",
"iipId",
"pelna"
})
public class PobierzUlice {
@XmlElement(namespace = "")
protected String iipPn;
@XmlElement(namespace = "")
protected String iipId;
@XmlElement(namespace = "")
protected boolean pelna;
/**
* Gets the value of the iipPn property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getIipPn() {
return iipPn;
}
/**
* Sets the value of the iipPn property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setIipPn(String value) {
this.iipPn = value;
}
/**
* Gets the value of the iipId property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getIipId() {
return iipId;
}
/**
* Sets the value of the iipId property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setIipId(String value) {
this.iipId = value;
}
/**
* Gets the value of the pelna property.
* @return value
*/
public boolean isPelna() {
return pelna;
}
/**
* Sets the value of the pelna property.
* @param value value
*/
public void setPelna(boolean value) {
this.pelna = value;
}
}
错误是由于缺少生成的包-info.java 文件引起的。原来是被删了
我遇到以下异常,但无法找出导致它的原因。调用 getSlownikiOfflinePort 方法时抛出以下异常。
@WebEndpoint(name = "SlownikiOfflinePort")
public SlownikiOffline getSlownikiOfflinePort() {
return super.getPort(new QName("http://gugik.gov.pl/schemas/slowniki-offline-service/1.0", "SlownikiOfflinePort"), SlownikiOffline.class);
}
super class is javax.xml.ws.Service for this method is
javax.xml.ws.WebServiceException: class pl.package.OfflineService.PobierzPelne do not have a property of the name {http://gugik.gov.pl/schemas/slowniki-offline-service/1.0}teryt
at com.sun.xml.ws.client.sei.BodyBuilder$DocLit.<init>(BodyBuilder.java:245) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.sei.StubHandler.<init>(StubHandler.java:132) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingImpl.initStubHandlers(DatabindingImpl.java:162) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingImpl.<init>(DatabindingImpl.java:107) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:74) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:58) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.db.DatabindingFactoryImpl.createRuntime(DatabindingFactoryImpl.java:120) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.buildRuntimeModel(WSServiceDelegate.java:882) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.createSEIPortInfo(WSServiceDelegate.java:899) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:862) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:451) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:420) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:402) ~[jaxws-rt.jar:2.3.1]
at javax.xml.ws.Service.getPort(Service.java:169) ~[jaxws-api.jar:na]
at pl.package.OfflineService.getOfflinePort(SlownikiOfflineService.java:72) ~[classes/:na]
..............................................................................................................................................................................................
Caused by: javax.xml.bind.JAXBException: {http://gugik.gov.pl/schemas/slowniki-offline-service/1.0}teryt is not a valid property on class pl.package.OfflineService.PobierzPelne
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:960) ~[jaxb-runtime.jar:2.3.1]
at com.sun.xml.ws.db.glassfish.JAXBRIContextWrapper.getElementPropertyAccessor(JAXBRIContextWrapper.java:121) ~[jaxws-rt.jar:2.3.1]
at com.sun.xml.ws.client.sei.BodyBuilder$DocLit.<init>(BodyBuilder.java:242) ~[jaxws-rt.jar:2.3.1]
... 107 common frames omitted
出于某种原因,{http://gugik.gov.pl/schemas/slowniki-offline-service/1.0}(服务地址)被添加到 属性 名称中,仅用于此 class,这会导致异常。
问题是这个 class 是从 WSDL 和其他 classes 一起生成的,并且由于某种原因是唯一导致该异常或将服务地址附加到它的 属性 姓名。由于它是库代码中抛出的异常,我无法处理或修改它(在调试模式下从 属性 名称中删除地址使其在 Intellij 代码评估工具中工作)。
class代码导致异常:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "pobierzPelne", propOrder = {
"teryt"
})
public class PobierzPelne {
@XmlElement(required = true)
protected String teryt;
/**
* Gets the value of the teryt property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTeryt() {
return teryt;
}
/**
* Sets the value of the teryt property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTeryt(String value) {
this.teryt = value;
}
}
这里是 class 不会引发异常的代码之一:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "pobierzUlice", propOrder = {
"iipPn",
"iipId",
"pelna"
})
public class PobierzUlice {
@XmlElement(namespace = "")
protected String iipPn;
@XmlElement(namespace = "")
protected String iipId;
@XmlElement(namespace = "")
protected boolean pelna;
/**
* Gets the value of the iipPn property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getIipPn() {
return iipPn;
}
/**
* Sets the value of the iipPn property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setIipPn(String value) {
this.iipPn = value;
}
/**
* Gets the value of the iipId property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getIipId() {
return iipId;
}
/**
* Sets the value of the iipId property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setIipId(String value) {
this.iipId = value;
}
/**
* Gets the value of the pelna property.
* @return value
*/
public boolean isPelna() {
return pelna;
}
/**
* Sets the value of the pelna property.
* @param value value
*/
public void setPelna(boolean value) {
this.pelna = value;
}
}
错误是由于缺少生成的包-info.java 文件引起的。原来是被删了