是否可以使用Spring Data Rest为同一JPA实体发布两个不同的存储库?我为这两个存储库提供了不同的路径和rel-name,但只有两个中的一个可用作REST端点.我有两个存储库的原因是,其中一个是摘录,仅显示实体的基本字段.
我们在公司防火墙后面使用npm,因此在npm配置中使用代理和https代理设置.只要从外部注册表加载所有npm模块,这都可以正常工作.但事实上我们在内部github上也有内部模块.当然,访问这些模块不能使用代理.我的问题是:我可以在npm配置中指定域名列表,不应该使用代理吗?类似于unix shell中的no_proxy环境变量?
我想在servlet中执行JavaScript.是否可以在所有servlet调用中重用相同的Scripting Engine?Servlet实例由多个线程共享.这是否需要为每个请求创建一个新的Scripting Engine?这将是一个令人无法接受的性能损失.例如,以下代码是否保存?
public class MyServlet extends HttpServlet {
private ScriptEngineManager factory;
private ScriptEngine engine;
@Override
public void init() throws ServletException {
factory = new ScriptEngineManager();
engine = factory.getEngineByName("nashorn");
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
try (PrintWriter writer = res.getWriter()) {
ScriptContext newContext = new SimpleScriptContext();
newContext.setBindings(engine.createBindings(), ScriptContext.ENGINE_SCOPE);
Bindings engineScope = newContext.getBindings(ScriptContext.ENGINE_SCOPE);
engineScope.put("writer", writer);
Object value = engine.eval("writer.print('Hello, World!');", engineScope);
writer.close();
} catch (IOException | ScriptException ex) {
Logger.getLogger(AsyncServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
}
如果这不安全,那么避免每个请求创建引擎的最佳方法是什么?使用引擎池? …
使用docker提供程序启动vagrant(up)会产生rsync问题,因为rsync尝试与docker用户同步并询问我的密码,这当然是我没有的.如果我用一个vm.box交换docker provider一切都很好.我收到的消息是:
WDFM32388067A:vagranttest d022051$ vagrant up
Bringing machine 'default' up with 'docker' provider...
==> default: Docker host is required. One will be created if necessary...
default: Docker host VM is already ready.
==> default: Syncing folders to the host VM...
default: The machine you're rsyncing folders to is configured to use
default: password-based authentication. Vagrant can't script rsync to automatically
default: enter this password, so you'll likely be prompted for a password
default: shortly.
default:
default: If you don't want …
Run Code Online (Sandbox Code Playgroud) 在Spring中,RestController
我RequestBody
只需通过将相应的方法参数注释为@Valid
或者进行输入验证@Validated
.其他一些验证只能在对传入数据进行一些处理后才能执行.我的问题是,我应该使用什么类型的异常,以便它类似于@Valid
注释抛出的异常,以及如何从验证结果中构造此异常.这是一个例子:
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> createOrder(@RequestBody @Validated(InputChecks.class) Order order) {
// Some processing of the Order goes here
Set<ConstraintViolation<Order>> violations = validator.validate(order, FinalChecks.class);
// What to do now with the validation errors?
orders.put(order);
HttpHeaders headers = new HttpHeaders();
headers.setLocation(ServletUriComponentsBuilder.fromCurrentRequest().path("/" + order.getId()).build().toUri());
return new ResponseEntity<>(null, headers, HttpStatus.CREATED);
}
Run Code Online (Sandbox Code Playgroud) 我看到,与 spring-data-rest 存储库一起使用时,一组实体上的注释@RestResource(exported=false)
不会导出该组,而是嵌入该组实体而不是渲染 url。
这是预期的行为吗?
exported=false
至少可以说,这个属性不是具有误导性吗?该注释的确切语义是什么?
我将 spring-data-rest 与 neo4j 一起使用,即我的项目依赖于 spring-data-neo4j。
我有问题用Docker运行Vagrant.问题是共享文件夹的rsync.
WDFM32388067A:vagranttest d022051$ vagrant up
Bringing machine 'default' up with 'docker' provider...
==> default: Docker host is required. One will be created if necessary...
default: Vagrant will now create or start a local VM to act as the Docker
default: host. You'll see the output of the `vagrant up` for this VM below.
default:
default: Importing base box 'hashicorp/boot2docker'...
default: Matching MAC address for NAT networking...
default: Checking if box 'hashicorp/boot2docker' is up to date...
default: Setting the name of …
Run Code Online (Sandbox Code Playgroud) 我想构建一个在嵌入式Jetty服务器中调用异步servlet的简单示例.当我尝试从Request的AsyncContext启动Runnable时,我得到一个NullPointerException.这是服务器代码:
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServletHandler handler = new ServletHandler();
server.setHandler(handler);
ServletHolder holder = handler.addServletWithMapping(AsyncServlet.class, "/*");
holder.setAsyncSupported(true);
server.start();
server.join();
}
Run Code Online (Sandbox Code Playgroud)
这是servlet代码:
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
final AsyncContext ctxt = req.startAsync();
ctxt.start(() -> {
ctxt.complete();
});
}
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪的错误:
java.lang.NullPointerException
at org.eclipse.jetty.server.AsyncContextState$2.run(AsyncContextState.java:168)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:620)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:540)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
也许服务器需要任何其他配置.有什么建议?
增加:相同的servlet在嵌入式tomcat中运行时没有任何变化.
如果函数不更改任何共享对象但仅使用给定的参数,是否可以重用同一个Nashorn引擎和同一个JavaScriptObject(对于所有servlet请求,作为JS函数的评估)电话?请看以下示例:
public class MyServlet extends HttpServlet {
private ScriptEngineManager factory;
private ScriptEngine engine;
private ScriptObjectMirror script;
@Override
public void init() throws ServletException {
try {
factory = new ScriptEngineManager();
engine = factory.getEngineByName("nashorn");
script = (ScriptObjectMirror)engine.eval("function(writer) {writer.print('Hello, World!');}");
} catch (ScriptException ex) {
Logger.getLogger(MyServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
try (PrintWriter writer = res.getWriter()) {
script.call(null, writer);
writer.close();
} catch (IOException ex) {
Logger.getLogger(MyServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
这是线程安全的吗?这是在Servlet中重用Nashorn ScriptEngine的后续内容 …
从昨天开始,我使用的是IntelliJ 15.02,无法再设置任何断点.既没有单击侧栏,也没有单击"运行 - >切换线断点".这是IntelliJ中的Bug吗?或者有没有办法禁用/启用此功能?我感谢任何帮助.
java ×3
servlets ×3
spring ×3
docker ×2
nashorn ×2
rsync ×2
spring-data ×2
vagrant ×2
asynchronous ×1
boot2docker ×1
breakpoints ×1
exception ×1
javascript ×1
jetty ×1
neo4j ×1
npm ×1
proxy ×1
spring-boot ×1
ssh ×1
validation ×1