Customer.javajavax.xml.bind.UnmarshalException - 与链接除外:[org.xml.sax.SAXParseException:内容未在序言中不允许的。]
@Entity
@Table(name = "CUSTOMER", uniqueConstraints =
{
@UniqueConstraint(columnNames =
{
"CUSTNO"
})
})
@XmlRootElement
public class Customer
implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id @Column(name = "CUSTNO", length = 10, nullable = false) private String custNo;
@Column(name = "TITLE", length = 20, nullable = false) private String title;
@Column(name = "FIRSTNAME", length = 20, nullable = false) private String
firstName;
@Column(name = "MIDINIT", length = 1, nullable = true) private String
midInit;
@Column(name = "LASTNAME", length = 1, nullable = false) private String
lastName;
@Column(name = "EMAIL", length = 50, nullable = false) private String
email;
@Column(name = "PHONE", length = 16, nullable = true) private String
phone;
@Column(name = "GENDER", length = 1, nullable = true) private String
gender;
@Column(name = "STREETADDRESS", length = 50, nullable = true) private String
streetAddress;
@Column(name = "CITY", length = 20, nullable = true) private String
city;
@Column(name = "STATE", length = 2, nullable = true) private String
state;
@Column(name = "ZIPCODE", length = 10, nullable = true) private String
zipCode;
@Column(name = "COMPANYNAME", length = 25, nullable = true) private String
companyName;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "customer") private Set<ServiceRequest>
requests;
public Customer()
{
}
...... getters/setters....
客户机代码:
byte[] getCustomerResponse = (byte[])
RestClientUtil.sendGetMethod(urlGetCustomer + URLEncoder.encode(custNo, "UTF-8"));
Unmarshaller unmarshaller = RestClientUtil.getUnmarshaller(Customer.class);
StringReader reader = new StringReader(new String(getCustomerResponse));
Customer customer = (Customer) unmarshaller.unmarshal(reader);
我看到输出为:
found customer :{"customer":{"city":"city1 ","companyName":"companyName1 ","custNo":"RCN1","email":"[email protected]","firstName":"first1 ","gender":"F","lastName":"last1 ","midInit":"K","phone":"4082229871 ","state":"CA","streetAddress":"streetAddress1","title":"S ","zipCode":"zipCode "}}
javax.xml.bind.UnmarshalException - 与链接的异常: : 在javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl [org.xml.sax.SAXParseException内容不允许在序言。]。 java:315) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:526) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0( UnmarshallerImpl.java:223) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:189) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java: 137) at javax.xml.bi nd.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:194) 在com.ge.dsp.iworkRemote.remoteAgents.CustomerRemoteAgent.getCustomerByCustNo(CustomerRemoteAgent.java:151) 在com.ge.dsp.iworkRemote.remoteAgents.CustomerRemoteAgent。执行(CustomerRemoteAgent.java:311) at com.ge.dsp.iworkRemote.remoteAgents.CustomerRemoteAgent.main(CustomerRemoteAgent.java:368) 原因:org.xml.sax.SAXParseException:在prolog中不允许使用内容。 at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source ) 在org.apache.xerces.impl.XMLErrorReporter.reportError(来源不明) 在org.apache.xerces.impl.XMLScanner.reportFatalError(来源不明) 在org.apache.xerces.impl.XMLDocumentScannerImpl $ PrologDispatcher.dispatch (Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration。解析(未知来源)(未知源) at org.apache.xerces.jaxp.SAXParserImpl $ JAXPSAXParser.parse(Unknown Source) 来源不明) 在com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:217) ... 6个 显示java.lang.NullPointerException 在com.ge.dsp.iworkRemote .remoteAgents.CustomerRemoteAgent.submitRequest(CustomerRemoteAgent.java:167) at com.ge.dsp.iworkRemote.remoteAgents.CustomerRemoteAgent.execute(CustomerRemoteAgent.java:313) at com.ge.dsp.iworkRemote.remoteAgents.CustomerRemoteAgent.main (CustomerRemoteAgent.java:368)
'new String(byte [])'几乎肯定是错的 - 从字节数组构造字符串时,您应该始终指定字符编码。或者,在这种情况下,将'byte []'包装在'ByteArrayInputStream'中,然后解组,而不是使用字符串。 –