首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误503错误

错误503错误
EN

Stack Overflow用户
提问于 2014-01-28 09:54:35
回答 2查看 1.6K关注 0票数 0

使用套接字从用"C“编写的服务器获取数据。我的java类名是ReceivingData,下面是用于接收数据并将其存储在ArrayList中并将ArrayList传递给其他类的构造器的代码。

代码语言:javascript
复制
package pack.exp;

import java.io.InputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class ReceivingData implements Runnable
{
    public static void main(String[] args) 
    {

    Thread t = new Thread(new ReceivingData());
         t.start();
    }

    public List<String> obj1;

    @Override
    public void run() 
    {
        Socket s;
        InputStream stream;
        try 
        {
            s = new Socket("10.9.211.22", 6870);
            stream = s.getInputStream();

            byte[] data = new byte[13];
            int read;
            String can_Id= null;

            while((read = stream.read(data)) != -1)
            {

                String can_Data= 
                                String.format("%02X:%02X:%02X:%02X, 
                                data[0], data[1], data[2], data[3]);


                List<String> obj1= new ArrayList<String>();
                obj1.add(can_Data.substring(0, 2));
                obj1.add(can_Data.substring(3, 5));
                obj1.add(can_Data.substring(6, 8));
                obj1.add(can_Data.substring(9, 11));


                Receiving_At_Regular_IntervalServlet rari= new 
                                Receiving_At_Regular_IntervalServlet(obj1);
                Thread.sleep(3000);
            }
        }

        catch (Exception e) 
        {

            e.printStackTrace();
        }
    }
 }

这是Servlet,它接收来自上面文件传递的ArrayList的数据。并将这些数据从数组列表中存储到实体中进行数据存储,并将其部署到上。

代码语言:javascript
复制
package pack.exp;


@SuppressWarnings("serial")
public class Receiving_At_Regular_IntervalServlet extends HttpServlet 
{
    List<String> obj2= new ArrayList<String>();

    public Receiving_At_Regular_IntervalServlet(List<String> obj2) throws 
        IOException 
    {
        this.obj2= obj2;
        System.out.println("Receiving in Web Project" + obj2);
        System.out.println("");
        System.out.println("");
    }

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws 
        IOException 
    {
        Key k1 = KeyFactory.createKey("C","0D F0 0800 1"); 

       String parameter1 = obj2.get(0);

           Entity can1 = new Entity(k1);



         can1.setProperty("First Parameter", parameter1); 


         DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
         datastore.put(can1);


           Entity can11 = null;


        try 
        {
            can11= datastore.get(k1);

        }

        catch (EntityNotFoundException e) 
        {
            e.printStackTrace();
        }


        String first_P= (String) can11.getProperty("First Parameter");

        resp.setContentType("text/plain");
            resp.getWriter().println("Parameter---  " + first_P);  

   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-28 17:46:27

ReceivingData代码显然运行一个线程,并使用本地计算机的套接字从10.9.211.22端口6870读取数据。这很好。它将四个字节转换为一个列表,并将其传递给Receiving_At_Regular_IntervalServlet。好吧,但不是你想要的。

此部分可能在开发计算机上工作,但如果部署到云上,则无法工作。AppEngine服务器不允许开发人员定义main()、使用套接字或与私有IP子网10通信。

Receiving_At_Regular_IntervalServlet有一个自定义构造函数。AppEngine不调用构造函数,因为它的servlet代码只需要默认的构造函数。这可能是发生503错误的时候。

对于servlet,数据不应该通过构造函数进入。数据必须通过doGet方法的请求参数的成员输入(虽然要成为RESTful,您应该在本例中使用doPut )。将数据插入请求参数,但将正确构造的http请求发送到服务器。您的代码缺乏web应用程序的设计。

在单独的项目中构建主程序和AppEngine代码,并使用http与servlet进行主要对话。

票数 1
EN

Stack Overflow用户

发布于 2014-01-28 10:56:53

HTTP ERROR 503错误

当服务器抛出此错误时,您无法帮助任何事情。只有当来自服务器的服务不可用时才会引发。

您需要在客户端应用程序中显式地处理这些错误代码( 200 OK除外),并且必须显示适当的消息或作为备用的需求建议。

  1. 状态代码定义
  2. 不可用
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21402203

复制
相关文章

相似问题

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