- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有课
@ApplicationScoped
public class Service{
private Map<String, Integer> something ;
private final Logger LOGGER = LoggerFactory.getLogger(Service.class);
@PostConstruct
public void initialize(){
something = new HashMap<>();
}
public void increase(String userName){
something.put(userName, something.getOrDefault(userName, 0) + 1);
}
public Map<String, Integer> getSomething(){
return this.something;
}
public Integer getSomethingForUser(String userName){
return something.getOrDefault(userName, 0);
}
}
我想成为全局的一个实例。
问题是,当我在两个不同的地方注入(inject)此服务时,我有两个不同的服务实例 - 这导致始终返回计数器 0
。 .toString()
返回如下:
package.services.Service@492e4f4b
package.services.Service@4bc86c4d
我创建此服务是为了测试我的 HK2-Jersey 实现,它显然没有正常工作。
网络.xml:
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>io.swagger.jaxrs.listing,mypackage.rest</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>
io.swagger.jaxrs.listing.ApiListingResource,
io.swagger.jaxrs.listing.SwaggerSerializers
</param-value>
</init-param>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>mypackage.config.ApplicationConfiguration</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
应用配置.java:
public class ApplicationConfiguration extends ResourceConfig {
public ApplicationConfiguration() {
register(new AbstractBinder() {
@Override
protected void configure() {
bind(Service.class).to(Service.class);
}
});
packages(true, "com.mypackage.rest");
}
如果没有这个 bind
函数,服务器会抛出 @Inject
不满足的异常。
谁能指出,哪里出了问题?
最佳答案
在 HK2 中没有 @ApplicationScoped
这样的东西。那只是 CDI(这是不同的)。在 HK2 中有一个单例作用域。根据您的配置,您可以执行以下操作
bind(new Service()).to(Service.class);
这将自动使其成为单例。唯一的问题是你失去了容器的任何注入(inject)(如果你需要的话)。另一种方式是在in(Scope)
方法中设置作用域
bind(Service.class).to(Service.class).in(Singleton.class);
那是 javax.inject.Singleton
。
关于java - Jersey 2 + HK2 - @ApplicationScoped 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37776741/
我要匹配港语的字符串我有以下香港语言的月份和年份 二零一六年六月份 ===>June 2016 二零一五年六月份 ===>June 2015 我已经使用文化信息(zh-HK)来获得月份 但是如何获
我正在构建一个多语言网络应用程序。客户要求香港网站以英文显示。不幸的是,“en-HK”在 asp.net 中不是有效的区域性,因此我尝试使用“zh-hk”来绕过它。但是,这导致日期时间字符串(格式为
下面是Shapeless的LabelledProductTypeClassCompanion中deriveHCons的签名: implicit def deriveHCons[HK <: Symbol
当我尝试创建 CultureInfo 时对于使用 Windows Phone 7 RTM SDK 的 zh-HK,我得到了 System.ArgumentException带有“值不在预期范围内。”。
我对此感到非常困惑。 这是我正在使用的。 请求 2.18.4 python 2.7.14 我正在构建一个爬虫并尝试使用 requests.get() 连接到一个 url。 这是一个从 indeed 跳
我是一名优秀的程序员,十分优秀!