我正在尝试使用现有的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