我有一个java play框架2.4.x Web应用程序,提供JSON/HTTP API.当我运行我的前端HTML/JS file:///Users/nize/tmp/index.html在http://localhost:9000chrome show上调用API时
XMLHttpRequest cannot load http://localhost:9000.
No 'Access-Control-Allow-Origin' header is present
on the requested resource. Origin 'null' is therefore
not allowed access. The response had HTTP status code 403.
Run Code Online (Sandbox Code Playgroud)
我已根据Play Framework 2.4.x CORS文档中的说明配置了Web应用程序:
build.sbtFilters.java到项目的根目录(也尝试过/app)添加以下节到 application.conf
play.filters.cors {allowedOrigins = ["*"," http:// localhost "] #allowedHttpMethods = ["GET","POST"] #allowedHttpHeaders = ["Accept"] #preflightMaxAge = 3 days}
我错过了什么?
编辑: 症状看起来与其他非常相似的stackoverflow帖子相同或类似.通过重新配置计算机上安装的Cisco AnyConnect VPN解决了该问题.但是,我没有安装该软件.
在Wikipedia中列出了许多符合WS-I Basic Profile(BP)的框架.但是,不清楚框架符合哪个版本的BP.所以我的问题如下:
哪些框架/产品(Java,.NET和其他)符合WS-I Basic Profile 2.0?
这个问题的答案可能对选择企业Web服务标准感兴趣.似乎大多数框架都符合BP 1.1,但问题是IT环境是否已准备好升级到BP 2.0(包括MTOM二进制附件,WS-Addressing,SOAP 1.2和UDDI 3).
研究一个示例框架,IBM WebSphere Message Broker(WMB),我发现了以下信息:
但是,我没有找到任何明确的声明,详细说明该产品支持WS-I Basic Profile Version 2.0.许多框架似乎也是如此......
XML解析器/反序列化器通常能够区分显式设置为null的可枚举元素和省略的可选元素吗?
假设我们有以下复杂类型:
<complexType name="NiceType">
<sequence>
<element name="niceElem" nillable="true" type="int" minOccurs="0" />
</sequence>
</complexType>
Run Code Online (Sandbox Code Playgroud)
元素显式设置为null(示例1):
<niceType>
<niceElem xsi:nil="true"/>
</niceType>
Run Code Online (Sandbox Code Playgroud)
元素省略(例2):
<niceType>
</niceType>
Run Code Online (Sandbox Code Playgroud)
一般的解析器,例如JAX-B实现或.NET等,例如WCF的XML模块,是否能够分辨上面的示例1和示例2之间的区别?换句话说,您是否能够以可互操作的方式组合两个NULL表示 - 如示例中所示 - 以便传达不同的NULL阴影?
我有一个play框架应用程序,我已经迁移到play框架2.4.2上运行.它为javascript/html前端提供RESTful API.现在我在引入缓存方面遇到了一些问题.
LibraryController(将JSON/HTTP请求转换为JSON/HTTP响应):
public class LibraryController extends Controller {
public Result getBook(String isbn) {
Book book = LibraryManager.getBook(isbn);
BookDto bookDto = DtoMapper.book2BookDtos(book);
return ok(Json.toJson(bookDto));
}
}
Run Code Online (Sandbox Code Playgroud)
LibraryManager(将域模型请求转换为域模型响应):
public class LibraryManager {
@Inject CacheApi cache;
public static Book getBook(String isbn) {
Book book = cache.get(isbn);
// ...
}
Run Code Online (Sandbox Code Playgroud)
我在这里遇到的问题是我得到了
non-static variable cache cannot be referenced from a static context
Run Code Online (Sandbox Code Playgroud)
我注入缓存的方式是根据Play 2.4.2缓存API文档.我根据Play 2.2.x Cache API文档使用缓存时没有遇到此问题.该版本有一个我可以调用的静态方法.
我该怎么办?我应该使getBook非静态应用一些单例模式吗?或者我应该以其他方式访问缓存?示例代码肯定会有所帮助!
我是RAML的新手,我有一个基本问题:
无法指定一组替代baseUri(仅允许一个).是否有任何替代方法来建模API的多个替代安装(例如,对于单独的发布周期环境)?
我有这个班有内班
public class A {
public class NameComparator implements Comparator<A> {
@Override
public int compare(A o1, A o2) {
return o1.name.compareToIgnoreCase(o2.name);
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
我想从另一个类C(它驻留在除A之外的另一个包)中访问此NameComparator类.
示例(来自C):
Collections.sort(aArrayList,A.new NameComparator());
这不起作用.我应该移动内部类NameComparator,以便它不包含在类A中并将其重命名为类似于ANameComparator的类吗?它们是如此紧密相关,所以不将这个功能放在A类中感觉很尴尬.