到目前为止我发现了什么:
*)旁注:虽然我们的容器入口点是[“/opt/tomcat/bin/catalina.sh”,“run”],但在catalina.sh中,java进程是通过bash buildin“exec”命令启动的,因此java进程取代了shell进程,因此成为新的进程id 1。(我可以通过exec进入正在运行的容器并在其中执行“ps aux”来验证这一点。)顺便说一句,我使用的是tomcat 7.0.88。
我发现有关 tomcat 默认情况下正常关闭的声明(http://tomcat.10.x6.nabble.com/Graceful-Shutdown-td5020523.html - “任何正在进行的连接都将完成”),但我所能看到的是从 docker 发送到 java 进程的 SIGTERM 几乎不会停止正在执行的请求。
我编写了一个小 servlet 来测试此行为:
import javax.ws.rs.*;
import javax.ws.rs.core.*;
import javax.ws.rs.core.Response.Status;
@Path("/")
public class SlowServerRes
{
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("test1")
public Response test1(@QueryParam("sleep") final int sleepDurationSec)
{
long received = System.currentTimeMillis();
System.out.println("+++++++++++++++++++++ received request at " + received);
for (int i=1; i <= sleepDurationSec; i++) { …Run Code Online (Sandbox Code Playgroud) 请忍受我的长期问题,我想尽可能清楚.(如另一个问题所示.)
在下面的示例中,所有旋转按钮都是来自陀螺仪传感器的陀螺仪值的测试替代品.传感器固定在现实世界的躯干上,因此按钮用于表示相对于躯干坐标系而不是场景坐标系应用于虚拟躯干的旋转增量.
如果从"零"旋转开始,所有按钮都能正常工作.但是当我按下3次偏航然后滚动时,我看到滚动旋转在场景轴上工作.但我想将其应用于当前的躯干旋转.
我已经从这里尝试了几个相关问题的建议,但没有找到解决方案.
旁注:我不确定偏航,俯仰和滚转这两个术语是否通常都与欧拉角有关,所以我想强调一下,根据我的理解,陀螺仪传感器的值不是欧拉角,因为它们代表相对于旋转角的旋转角度.当前的躯干旋转,而不是躯干起始点的"绝对"累积角度.因此,如果我不恰当地使用这些术语,请尝试理解我的意思.
(背景信息:我有一个机器人项目roboshock.de,陀螺仪传感器连接到机器人躯干,我想在屏幕上看到机器人的旋转.下面示例中的旋转按钮只是测试的替代品.来自传感器的陀螺仪值.)
任何帮助深表感谢.
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Box;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
public class PuppetTestApp extends Application {
int width = 800;
int height = 500;
XGroup torsoGroup;
double torsoX = 50;
double torsoY = 80;
public Parent createRobot() {
Box torso = new Box(torsoX, torsoY, 20);
torso.setMaterial(new PhongMaterial(Color.RED));
Box head = new Box(20, 20, 20);
head.setMaterial(new …Run Code Online (Sandbox Code Playgroud)