首页 > 代码库 > 客户端+服务器端总结

客户端+服务器端总结

常见错误与解决方案:

错误1、服务器重启后,自动停止

解决办法:一般查看E:\Program Files\Apache Software Foundation\Tomcat 7.0\logs,tomcat安装目录下面的tomcat7-stderr.2014-05-10.txt,一般性错误需要在这里面找,错误如下:

严重: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
<style></style>

后来,装了又重启机器,还是不行,然后在重装。目标定位在context上面(service.xml里面的加上的一句话)。看看他到底如何影响你的服务器的。其实,这个可以理解为将服务器的启动项的地址改不了,每次都不会从原来的tomcat里面去找,而是从我们改变的目录底下去找启动文件,然后执行里面的操作。这些操作都是编译完的。

web.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <servlet>
        <servlet-name>poi</servlet-name>
        <servlet-class>zhuxuekui.service.SrvPoi</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
   
    <servlet-mapping>
        <servlet-name>poi</servlet-name>
        <url-pattern>/poi</url-pattern>
    </servlet-mapping>
</web-app>
<style></style>

      千万千万不要写错,也不要多写,之前在servlet里面套servlet太不应该,一句的结尾与结束,肯定有其原因。还有就是假如你之前没错,后来突然错了,你就不要在搞以前的操作了。错误肯定发生在后面,而不是前面。这个一定要注意。我是深受其害。

      servlet里面的文件可以从下往上看,首先在手机客户端配置好ip地址+/poi(局域网即可),当程序执行到这一步的时候,服务器自动搜索web.xml中的/poi,然后通过servlet-name,找到servlet中的servlet-name,然后找到包名+类名的类。这个其实就有一对标签。servlet 以及  servlet映射。这个操作其实就是通过http通信协议,数据协议用的JSON,然后将数据通过tomcat服务器传至mysql数据库。这两者之间的联系通过两个函数:手机客户端的post 与 服务器端的dopost ,而且,每次他俩都是一对同时执行,就如上面我刚刚讲到的一样,假如客户端提交的是post请求,那么服务器端执行SrvPoi类中的dopost(),来处理请求,一一对应。

错误2、mysqlworkbench 删掉原来的表后,无法重现再建表。

解决方案:1、不删,直接修改表名,表里面的字段,而不用删除。

               2、查找与删除要用合适的方案,不要一味的删数据库或者表。这个操作,貌似还需要重启workbench。

 

错误3、每次执行到下面这步,程序出错。

    TransactionManager.callInTransaction(getConnectionSource(),
                    new Callable<Void>() {

                        @Override
                        public Void call() throws Exception {
                            ArrayList<MKPoiInfo> bdPois = res.getAllPoi();
                            ArrayList<Poi> pois = new ArrayList<Poi>();
                            for (MKPoiInfo poi : bdPois) {
                                Poi p = new Poi(poi, "测试用户");
                                create(p);
                                pois.add(p);
                            }
                            sendPoiToServer(pois);
                            return null;
                        }
                    });
2014/5/10 21:05:36

程序运行到这一步出错。这是啥问题,请教。

在我们调试错误的时候,学会看日志有时候事半功陪,有些时候纠结很多什么都未必能解决。所以调试时 需要 单步调试(第一个警告栏不用按下)+日志。错误如下:

image
<style></style>

原因:col_id需要唯一,重复插入相同的数据会失败。

这里介绍下,为什么虚拟机可以与服务器端联系在一起,而手机有时候却不行。

主要还是上面的原因,所以在手机上调试的时候,必须要卸载再卸载。然后在测试。我们可以通过捕捉发现错误之所在。

 

错误4、如何保证数据传输过去。

解决:1、保证防火墙关闭 2、最好在一个局域网下 3、保证手机浏览器与电脑浏览器都可以连接服务器。可以多测测。IP地址一定要对。

 

截图: