关于 Java 中的 JAX-RPC 规范和序列化
A 使用其中存在的 eclipse 插件创建了一个 Web 服务(生成 java bean 骨架)。这样创建的类使用 java.lang.Class 和 java.lang.Object。但是当我使用这些类时,Eclipse 显示该项目不符合 JAX-RPC 1.1 规范。之后它说从 Java 生成 WSDL 时出错:java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializer 无法转换为 org.apache.axis.encoding.Serializer
可以任何人都可以告诉我我可以用什么来实现这一点。
这是生成的类之一。
public class Address implements java.io.Serializable {
private java.lang.String type;
private java.lang.String value;
public Address() {
}
public Address(
java.lang.String type, java.lang.String value) {
this.type = type;
this.value = value;
}
/**
* Gets the type value for this Address.
*/
public java.lang.String getType() {
return type;
}
/**
* Sets the type value for this Address.
*/
public void setType(java.lang.String type) {
this.type = type;
}
/**
* Gets the value value for this Address.
*
* @return value
*/
public java.lang.String getValue() {
return value;
}
/**
* Sets the value value for this Address.
*
* @param value
*/
public void setValue(java.lang.String value) {
this.value = value;
}
private java.lang.Object __equalsCalc = null;
public synchronized boolean equals(java.lang.Object obj) {
if (!(obj instanceof Address)) return false;
Address other = (Address) obj;
if (obj == null) return false;
if (this == obj) return true;
if (__equalsCalc != null) {
return (__equalsCalc == obj);
}
__equalsCalc = obj;
boolean _equals;
_equals = true &&
((this.type==null && other.getType()==null) ||
(this.type!=null &&
this.type.equals(other.getType()))) &&
((this.value==null && other.getValue()==null) ||
(this.value!=null &&
this.value.equals(other.getValue())));
__equalsCalc = null;
return _equals;
}
private boolean __hashCodeCalc = false;
public synchronized int hashCode() {
if (__hashCodeCalc) {
return 0;
}
__hashCodeCalc = true;
int _hashCode = 1;
if (getType() != null) {
_hashCode += getType().hashCode();
}
if (getValue() != null) {
_hashCode += getValue().hashCode();
}
__hashCodeCalc = false;
return _hashCode;
}
// Type metadata
private static org.apache.axis.description.TypeDesc typeDesc =
new org.apache.axis.description.TypeDesc(Address.class, true);
static {
typeDesc.setXmlType(new javax.xml.namespace.QName("http://ws.spherecom.com/", "Address"));
org.apache.axis.description.ElementDesc elemField =
new org.apache.axis.description.ElementDesc();
elemField.setFieldName("type");
elemField.setXmlName(new javax.xml.namespace.QName("http://ws.spherecom.com/", "type"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
elemField.setNillable(false);
typeDesc.addFieldDesc(elemField);
elemField = new org.apache.axis.description.ElementDesc();
elemField.setFieldName("value");
elemField.setXmlName(new javax.xml.namespace.QName("http://ws.spherecom.com/", "value"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
elemField.setNillable(false);
typeDesc.addFieldDesc(elemField);
}
/**
* Return type metadata object
*/
public static org.apache.axis.description.TypeDesc getTypeDesc() {
return typeDesc;
}
/**
* Get Custom Serializer
*/
public static org.apache.axis.encoding.Serializer getSerializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return new org.apache.axis.encoding.ser.BeanSerializer(
_javaType, _xmlType, typeDesc);
}
/**
* Get Custom Deserializer
*/
public static org.apache.axis.encoding.Deserializer getDeserializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return new org.apache.axis.encoding.ser.BeanDeserializer(
_javaType, _xmlType, typeDesc);
}
}
A have created a web service using eclipse plugin present in it (generate java bean skeleton). The classes thus created are using java.lang.Class and java.lang.Object. But when I use those classes eclipse shows that project does not comply with JAX-RPC 1.1 specification. And after that it said Error in generating WSDL from Java: java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializer cannot be cast to org.apache.axis.encoding.Serializer
Can any one tell me what I can use for this.
Here is one of the class generated.
public class Address implements java.io.Serializable {
private java.lang.String type;
private java.lang.String value;
public Address() {
}
public Address(
java.lang.String type, java.lang.String value) {
this.type = type;
this.value = value;
}
/**
* Gets the type value for this Address.
*/
public java.lang.String getType() {
return type;
}
/**
* Sets the type value for this Address.
*/
public void setType(java.lang.String type) {
this.type = type;
}
/**
* Gets the value value for this Address.
*
* @return value
*/
public java.lang.String getValue() {
return value;
}
/**
* Sets the value value for this Address.
*
* @param value
*/
public void setValue(java.lang.String value) {
this.value = value;
}
private java.lang.Object __equalsCalc = null;
public synchronized boolean equals(java.lang.Object obj) {
if (!(obj instanceof Address)) return false;
Address other = (Address) obj;
if (obj == null) return false;
if (this == obj) return true;
if (__equalsCalc != null) {
return (__equalsCalc == obj);
}
__equalsCalc = obj;
boolean _equals;
_equals = true &&
((this.type==null && other.getType()==null) ||
(this.type!=null &&
this.type.equals(other.getType()))) &&
((this.value==null && other.getValue()==null) ||
(this.value!=null &&
this.value.equals(other.getValue())));
__equalsCalc = null;
return _equals;
}
private boolean __hashCodeCalc = false;
public synchronized int hashCode() {
if (__hashCodeCalc) {
return 0;
}
__hashCodeCalc = true;
int _hashCode = 1;
if (getType() != null) {
_hashCode += getType().hashCode();
}
if (getValue() != null) {
_hashCode += getValue().hashCode();
}
__hashCodeCalc = false;
return _hashCode;
}
// Type metadata
private static org.apache.axis.description.TypeDesc typeDesc =
new org.apache.axis.description.TypeDesc(Address.class, true);
static {
typeDesc.setXmlType(new javax.xml.namespace.QName("http://ws.spherecom.com/", "Address"));
org.apache.axis.description.ElementDesc elemField =
new org.apache.axis.description.ElementDesc();
elemField.setFieldName("type");
elemField.setXmlName(new javax.xml.namespace.QName("http://ws.spherecom.com/", "type"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
elemField.setNillable(false);
typeDesc.addFieldDesc(elemField);
elemField = new org.apache.axis.description.ElementDesc();
elemField.setFieldName("value");
elemField.setXmlName(new javax.xml.namespace.QName("http://ws.spherecom.com/", "value"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
elemField.setNillable(false);
typeDesc.addFieldDesc(elemField);
}
/**
* Return type metadata object
*/
public static org.apache.axis.description.TypeDesc getTypeDesc() {
return typeDesc;
}
/**
* Get Custom Serializer
*/
public static org.apache.axis.encoding.Serializer getSerializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return new org.apache.axis.encoding.ser.BeanSerializer(
_javaType, _xmlType, typeDesc);
}
/**
* Get Custom Deserializer
*/
public static org.apache.axis.encoding.Deserializer getDeserializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return new org.apache.axis.encoding.ser.BeanDeserializer(
_javaType, _xmlType, typeDesc);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论