厨师 做菜 java,如何在厨师食谱的背景下运行java程序

I am a chef rookie. I want to create a recipe to run a jar at background.

bash 'run_jar' do

code <

wget https://github.com/kiwiwin/jar-repo/releases/download/kiwi/helloworld-1.0.jar -O hello.jar

java -jar hello.jar &

EOH

end

The helloworld-1.0.jar is a program first print "Hello World", then execute a while(true) loop.

I expect when I login to the chef-client machine. It should indicate there is a jar running using "jps" command. But there is no such jar running.

And I can see the hello.jar is downloaded which indicates the code block has been executed already.

What's wrong with this recipe?

解决方案

You are best advised to configure your code to run as a service. Several wrappers available, for example:

Once this is done you can configure chef to manage the new service:

service "myapp_service" do

supports :status => true, :restart => true

start_command "/usr/lib/myapp/bin/myapp start"

restart_command "/usr/lib/myapp/bin/myapp restart"

status_command "/usr/lib/myapp/bin/myapp status"

action [ :enable, :start ]

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以通过使用Socket编程实现顾客创建订单并发送给厨师厨师接收到订单后进行处理。以下是基本的实现步骤: 1. 顾客端创建订单信息,将订单信息封装成一个对象,并通过Socket发送给厨师端。 2. 厨师端使用ServerSocket监听客户端连接请求,并接收顾客端发送的订单信息。 3. 厨师端接收到订单信息后,对订单进行处理(如打印订单、烹饪食物等),并将处理结果发送给顾客端。 4. 顾客端接收到订单处理结果后,展示给用户。 以下是一个简单的示例代码: 顾客端代码: ```java import java.io.IOException; import java.io.ObjectOutputStream; import java.net.Socket; public class Customer { public static void main(String[] args) { try { //创建一个订单对象 Order order = new Order(); order.setDish("红烧肉"); order.setCount(2); order.setTableNo(1); //将订单对象发送给厨师端 Socket socket = new Socket("localhost", 8888); ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); oos.writeObject(order); oos.flush(); oos.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 厨师端代码: ```java import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; public class Chef { public static void main(String[] args) { try { //创建ServerSocket并监听8888端口 ServerSocket serverSocket = new ServerSocket(8888); System.out.println("等待顾客下单..."); //接收顾客端连接请求 Socket socket = serverSocket.accept(); System.out.println("顾客下单成功!"); //接收顾客端发送的订单信息 ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); Order order = (Order) ois.readObject(); System.out.println("接收到订单:" + order.getDish() + " x " + order.getCount()); //处理订单 System.out.println("开始处理订单..."); //... System.out.println("订单处理完成!"); //将处理结果发送给顾客端 ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); oos.writeObject("您的订单已处理完成!"); oos.flush(); //关闭流和连接 oos.close(); ois.close(); socket.close(); serverSocket.close(); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } } ``` 在这个示例中,顾客端创建订单对象,并将订单对象发送给厨师端。厨师端接收到订单对象后,对订单进行处理,并将处理结果发送给顾客端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值