相关疑难解决方法(0)

Jersey 2 + HK2 - @ApplicationScoped 不工作

我有课

@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);
 }
}
Run Code Online (Sandbox Code Playgroud)

我想成为全局一个实例。

问题是,当我在两个不同的地方注入这个服务时,我有两个不同的服务实例 - 这导致总是返回 counter 0.toString()返回如下:

package.services.Service@492e4f4b
package.services.Service@4bc86c4d
Run Code Online (Sandbox Code Playgroud)

我创建了这个服务来测试我的 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> …
Run Code Online (Sandbox Code Playgroud)

java dependency-injection jersey-2.0 hk2

3
推荐指数
1
解决办法
1032
查看次数

标签 统计

dependency-injection ×1

hk2 ×1

java ×1

jersey-2.0 ×1