我正在嘗試使用現有的Java類來使用Axis2創建Web服務。這個類不是Java Bean嗎?
當我發送到Web服務的請求,Axis2中顯示以下信息:
[01 Nov 2012 16:37:05:244] classloader.BeanInfoCache: Unable to locate a BeanInfo cache for class ems.shared.Fti (stopClass=class java.lang.Object). This will negatively affect performance!
我不知道這是什麼錯誤意味着,但它使我懷疑,如果ems.shared.Fti類不滿足作爲Java Bean的所有要求。你能看到這個班有什麼問題嗎?
package ems.shared;
import java.io.Serializable;
public class Fti implements Serializable
{
private static final long serialVersionUID = 7476379431395094501L;
public static final Fti UNDEFINED = new Fti(-1);
public static final Fti BROADCAST = new Fti((int) (Math.pow(2, 20) - 2));
private int fti;
public Fti() {
}
public Fti(int fti)
{
this.fti = fti;
}
public Fti(String fti)
{
try
{
this.fti = Integer.parseInt(fti);
}
catch (NumberFormatException e)
{
throw new IllegalArgumentException(fti + " is not a valid FTI");
}
}
public void setFti(int fti) {
this.fti = fti;
}
public int getFti() {
return fti;
}
public int asInt()
{
return this.fti;
}
@Override
public String toString()
{
return String.valueOf(fti);
}
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + fti;
return result;
}
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Fti other = (Fti) obj;
if (fti != other.fti)
return false;
return true;
}
}
我相信在使用JavaBeans時,顯式的'BeanInfo'類是*優化*它們讓您避免通過手工提供所需的信息來反射分析bean類。提供它們不再是一種常見的做法,而Axis2不會緩存這類信息的事實主要是它是一個陳舊而破舊的工具包,您可能想用更現代的東西來取代它。 – millimoose
我明白了。因此,該消息與爲什麼Web服務無法正常工作無關。感謝您的信息。 – pacoverflow
這不太可能。以前的僱主在任何地方都使用Axis2,而我從來沒有見過一個BeanInfo類。我們主要從WSDL生成存根,但我不認爲它們也有beaninfos。 – millimoose