首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我上传到主机服务器时,会出现Eclipse Java Tomcat序列化策略问题。

当我上传到主机服务器时,会出现Eclipse Java Tomcat序列化策略问题。
EN

Stack Overflow用户
提问于 2014-11-04 21:58:28
回答 2查看 847关注 0票数 1

我已经使用Eclipse (4.3.2)和GWT对我的应用程序进行了更改,并在它工作的本地Tomcat上测试了它。但是,当我将它上传到主机服务器时(我做的是完全上传,而不仅仅是我更改的类),当我尝试使用它时,我会在日志中得到以下错误(登录):

代码语言:javascript
复制
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中添加了一个标签,并添加了一个TextBox来显示"Group“(客户端) AccountAndCubs.java,其中添加了要在AccountUpdateView.java (客户端) MySQLConnection.java中显示的新字段(get和set),其中我将新字段添加到sql (服务器端)

在我的搜索中,我发现了一些与此相关的信息,这些信息表明,我将“静态最终的长serialVersionUID =1L”添加到了我更改的类(AccountUpdateView.java)中,但我仍然得到了这个错误。

我注意到这句话:

代码语言:javascript
复制
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“的问题,但我没有更改,而且已经有:

代码语言:javascript
复制
package org.AwardTracker.client;

import java.io.Serializable;

public class ViewData implements Serializable {
    private static final long serialVersionUID = 1L;

你在这方面的帮助将不胜感激。另外,我不是很专业,还在学习,所以请耐心点,用简单的语言。

应要求增加:

ViewData代码:

代码语言:javascript
复制
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代码(添加了“group”):

代码语言:javascript
复制
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;
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-12 02:37:48

@IgorKlimer,ChrisHinshaw,谢谢你的帮助。

经过一段时间的尝试和错误之后,我终于把这个做好了。以防万一你想知道(这将在将来帮助你)我:

  1. 删除了ROOT.war (为了上传,我需要将war压缩并将压缩文件重命名为ROOT.war,当我将它上传到主机的服务器时,会自动获取并安装它),并重新启动
  2. 重新启动后,我上传了我的工作(在我的服务器上) ROOT.war
  3. 重新启动服务器
  4. 一旦重新启动,我就尝试了这个应用程序--同样的问题。
  5. 出于某种原因,我将主机服务器上的一个级别提升到私有的cgi-bin,并找到了另一个ROOT.war,所以我删除了它。
  6. 然后我回到了私有的cgi-bin/tomcat,并删除了ROOT.war。
  7. 然后我重新启动服务器。
  8. 一旦重新启动,我就上传了我的ROOT.war
  9. 上传后,我重新启动服务器。
  10. 一旦重新启动,我就进入Tomcat并选择Reload
  11. 然后启动Chrome并清除缓存
  12. 然后我尝试了这个应用程序,它成功了,我检查了我的更改,它们在那里工作,我做了一些更多的睾丸,检查了系统日志--所有的都是好的。

致以敬意,

格林

票数 1
EN

Stack Overflow用户

发布于 2017-11-17 03:02:35

尽管我还没有弄清楚实际的修复(因为无法在测试环境中删除ROOT.war,所以无法尝试您的修复),但我找到了一些可能对其他人有用的解决方法。

上述问题的主要问题是:

没有找到序列化策略文件'/org.AwardTracker.AwardTracker/C7227FD579DD02DA4BB5B3EBAD09AE79.gwt.rpc‘;您忘记在此部署中包含它了吗?

通常情况下,这是因为部署的WAR文件包含应用程序文件夹,其中有一个rpc文件。然而,由于tomcat缓存或其他方面的一些问题,它仍然在寻找以前部署中使用的旧rpc文件。

因此,工作是,采取以前的文件备份,并复制到应用文件夹再次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26745831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档