我需要编写一个代码
Runtime.getRuntime().exec("java -jar MyServerRunner -port MYPORT");lsof -t -i: MYPORTkill -9 PID(也可以通过执行java代码中的命令)但
如果我通过Runtime.getRuntime().exec()我的程序退出执行此命令退出代码137 - 这意味着当我运行时Runtime.getRuntime().exec("kill -9 PID")我杀死我的java程序的进程,但不是程序,我从代码运行.
我怎样才能杀死我从代码运行的进程?
PS也许我应该使用ProcessBuilder?
我有 spring 应用程序,其中我将 org.apache.cxf 用于soap 和 spring MVC 用于显示一些页面。我的web.xml包含两个 servlet:CXFServlet and mvc-dispatcher
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/servlet-context.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
当我@ResponseBody在我的控制器中使用时,一切都很好。
@Controller
@RequestMapping("/hello")
@ResponseBody
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String printWelcome() {
return "hello" ;
}
}
Run Code Online (Sandbox Code Playgroud)
但是后来我需要使用jsp我必须使用以下内容
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public ModelAndView printWelcome(ModelMap model) {
model.addAttribute("message", "hello");
return new ModelAndView("hello") ; …Run Code Online (Sandbox Code Playgroud)