![](/img/trans.png)
[英]URL is different when I start gwt-rpc project in eclipse DevMode and on Tomcat 7 Server, so I have issues with PayPal
[英]Eclipse GWT Java Tomcat - Serialisation policy issue when I upload to the hosting server
我已經使用Eclipse(4.3.2)和GWT對應用程序進行了更改,並在可以工作的本地Tomcat上對其進行了測試。 但是,當我將其上傳到托管服務器時(不僅是更改的類,我還進行了完整上傳),當我嘗試使用它(登錄)時,在日志中出現以下錯誤:
INFO: Server startup in 20107 ms
Nov 04, 2014 5:41:33 PM org.apache.catalina.core.ApplicationContext log
INFO: mySQLConnection: ERROR: The serialization policy file '/org.AwardTracker.AwardTracker/C7227FD579DD02DA4BB5B3EBAD09AE79.gwt.rpc' was not found; did you forget to include it in this deployment?
Nov 04, 2014 5:41:33 PM org.apache.catalina.core.ApplicationContext log
INFO: mySQLConnection: WARNING: Failed to get the SerializationPolicy 'C7227FD579DD02DA4BB5B3EBAD09AE79' for module 'http://tc1165.metawerx.com.au/org.AwardTracker.AwardTracker/'; a legacy, 1.3.3 compatible, serialization policy will be used. You may experience SerializationExceptions as a result.
Nov 04, 2014 5:41:40 PM org.apache.catalina.core.ApplicationContext log
SEVERE: Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type 'org.AwardTracker.client.ViewData' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer.For security purposes, this type will not be serialized.: instance = org.AwardTracker.client.ViewData@62066d5c
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:130)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:587)
at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:605)
at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:471)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:563)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:265)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:305)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:277)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:274)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:536)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:309)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:169)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:297)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:55)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:191)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:187)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:186)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:277)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:274)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:536)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:309)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:249)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:55)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:191)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:187)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.
java:745)
0 [catalina-exec-12] INFO gwtupload.server.UploadServlet - UPLOAD-SERVLET init: maxSize=3145728, slowUploads=0, isAppEngine=false, corsRegex=^$
2 [catalina-exec-12] INFO gwtupload.server.UploadServlet - UPLOAD-ACTION init: removeSessionFiles=false, removeData=false
我所做的更改是:AccountUpdateView.java,在其中添加了標簽和文本框以顯示“組”(客戶端)AccountAndCubs.java,在其中添加了要在AccountUpdateView.java中顯示的新字段(獲取和設置)(客戶端)MySQLConnection.java,我在其中將新字段添加到了sql調用(服務器端)
在搜索中,我發現了一些與此相關的信息,建議我添加“ static final long serialVersionUID = 1L;”。 到我更改的類(AccountUpdateView.java),但是我仍然收到此錯誤。
我注意到這一行:
SEVERE: Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type 'org.AwardTracker.client.ViewData' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer.For security purposes, this type will not be serialized.: instance = org.AwardTracker.client.ViewData@62066d5c
這表示“ ViewData.java”存在一個問題,該問題我尚未更改,但已經存在:
package org.AwardTracker.client;
import java.io.Serializable;
public class ViewData implements Serializable {
private static final long serialVersionUID = 1L;
您的幫助將不勝感激。 另外,我不是很熟練,仍在學習中,所以請耐心並使用簡單的語言。
根據要求添加:
ViewData代碼:
package org.AwardTracker.client;
import java.io.Serializable;
public class ViewData implements Serializable {
private static final long serialVersionUID = 1L;
private String accountId;
private String accountLevel;
private String ymId;
private String awId;
private String adAwardGroup;
private String adScoutGroup;
public ViewData() {
//just here because GWT wants it.
}
public String getaccountId() {
return accountId;
}
public void setaccountId(String accountId) {
this.accountId = accountId;
}
public String getaccountLevel() {
return accountLevel;
}
public void setaccountLevel(String accountLevel) {
this.accountLevel = accountLevel;
}
public String getymId() {
return ymId;
}
public void setymId(String ymId) {
this.ymId = ymId;
}
public String getawId() {
return awId;
}
public void setawId(String awId) {
this.awId = awId;
}
public String getadAwardGroup() {
return adAwardGroup;
}
public void setadAwardGroup(String adAwardGroup) {
this.adAwardGroup = adAwardGroup;
}
public String getadScoutGroup() {
return adScoutGroup;
}
public void setadScoutGroup(String adScoutGroup) {
this.adScoutGroup = adScoutGroup;
}
}
AccountsAndCubs.java代碼(已添加“組”):
package org.AwardTracker.client;
import com.google.gwt.user.client.rpc.IsSerializable;
import java.util.Date;
public class AccountAndCubs implements IsSerializable {
static final long serialVersionUID = 1L;
//@SuppressWarnings("unused")
private String accountId;
//@SuppressWarnings("unused")
private String emailaddress;
//@SuppressWarnings("unused")
private String password;
//@SuppressWarnings("unused")
private String level;
//@SuppressWarnings("unused")
private String pack;
//@SuppressWarnings("unused")
private Integer enabled;
//@SuppressWarnings("unused")
private Date archived;
//@SuppressWarnings("unused")
private String group;
//@SuppressWarnings("unused")
private String acaId;
//@SuppressWarnings("unused")
private String cdId;
//@SuppressWarnings("unused")
private String surname;
//@SuppressWarnings("unused")
private String firstname;
@SuppressWarnings("unused")
private AccountAndCubs() {
//just here because GWT wants it.
}
public AccountAndCubs(String accountId, String emailaddress, String password, String level, String pack,
Integer enabled, Date archived, String group, String acaId, String cdId, String surname, String firstname) {
this.accountId = accountId;
this.emailaddress = emailaddress;
this.password = password;
this.level = level;
this.pack = pack;
this.enabled = enabled;
this.archived = archived;
this.group = group;
this.acaId = acaId;
this.cdId = cdId;
this.surname = surname;
this.firstname = firstname;
}
public String getAccountId() {
return accountId;
}
public void setAccountId(String accountId) {
this.accountId = accountId;
}
public String getEmailAddress() {
return emailaddress;
}
public void setEmailAddress(String emailaddress) {
this.emailaddress = emailaddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getPack() {
return pack;
}
public void setPack(String pack) {
this.pack = pack;
}
public Integer getEnabled() {
return enabled;
}
public void setEnabled(Integer enabled) {
this.enabled = enabled;
}
public Date getArchived() {
return archived;
}
public void setArchived(Date archived) {
this.archived = archived;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public String getAcaId() {
return acaId;
}
public void setAcaId(String acaId) {
this.acaId = acaId;
}
public String getCdId() {
return cdId;
}
public void setCdId(String cdId) {
this.cdId = cdId;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getFirstName() {
return firstname;
}
public void setFirstName(String firstname) {
this.firstname = firstname;
}
}
@ IgorKlimer,@ ChrisHinshaw謝謝您的幫助。
經過一番嘗試和錯誤后,我終於可以解決這個問題了。 萬一您想知道(將來會對您有所幫助),我:
從主機服務器刪除了ROOT.war(要上傳,我需要壓縮war並將重命名的文件重命名為ROOT.war,當我將其上傳到主機的服務器時,該文件會自動安裝並安裝),然后重新啟動
重新啟動后,我在服務器上上傳了我的工作文件ROOT.war
重新啟動服務器
重新啟動后,我嘗試了該應用程序-同樣的問題
由於某種原因,我將主機服務器上的某個級別升級到private-cgi-bin並找到了另一個ROOT.war,因此我刪除了它
然后我回到private-cgi-bin / tomcat並刪除了ROOT.war
然后我重新啟動服務器
重新啟動后,我然后上傳了我的ROOT.war
上傳后,我重新啟動了服務器
重新啟動后,我進入Tomcat Manager,然后選擇Reload
然后,我啟動了Chrome並清除了緩存
然后,我嘗試了該應用程序並使其工作,我檢查了更改,這些更改在那里並可以正常工作,我做了一些測試,並檢查了系統日志-一切正常。
問候,
格林
雖然,我還沒有弄清楚實際的解決方法(不能嘗試使用您的解決方法,因為在測試環境中無法刪除ROOT.war),但是我得到了一些可能對其他人有用的解決方法。
上述問題的主要問題是:
找不到序列化策略文件'/org.AwardTracker.AwardTracker/C7227FD579DD02DA4BB5B3EBAD09AE79.gwt.rpc'; 您是否忘記將其包含在此部署中?
通常,發生這種情況是因為已部署的WAR文件包含應用程序文件夾,並且其中包含rpc文件。 但是,由於tomcat緩存或其他任何問題,它仍在尋找先前部署中使用的舊rpc文件。
因此,解決方法是,備份以前的文件並再次復制到應用程序文件夾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.