小编Pan*_*amo的帖子

无法解决此问题 UnsatisfiedDependencyException:SystemInjecteeImpl 处没有可用于注入的对象

我已经尝试了很多方法来解决这个问题,但没有成功。我发现,如果我们使用“abstractBinder”,那么这可以解决,但是一旦我的 Binder 就位,我就开始出现 404 错误。

UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl
Run Code Online (Sandbox Code Playgroud)

请帮忙

我的资源:

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.walmart.services.helpers.IUserService;
import com.walmart.services.helpers.ServicesTest;

@Path("/sayHello")
public class ControllerTest {

    @Inject
    private IUserService service;

    @Inject
    private ServicesTest service2;

    @GET
    @Path("/{name}")
    @Produces(MediaType.TEXT_PLAIN)
    public String method(@PathParam("name") String msg) {
        return service.method() + " msg";
    }

    @GET
    @Path("/v2/{name}")
    @Produces(MediaType.TEXT_PLAIN)
    public String method2(@PathParam("name") String msg) {
        return service2.method() + " msg";
    }
}
Run Code Online (Sandbox Code Playgroud)

我的资源配置文件:

@ApplicationPath("/rest/*")
public …
Run Code Online (Sandbox Code Playgroud)

jersey jersey-2.0 hk2 tomcat9 java-ee-8

5
推荐指数
1
解决办法
6459
查看次数

如何在JSF页面中通过EL将数据放入视图范围

在我的JSF页面中,这有效:

${requestScope.put('test', 'data')}
${requestScope.get('test')}
Run Code Online (Sandbox Code Playgroud)

这会导致异常:

${viewScope.put('test', 'data')}
${viewScope.get('test')}
Run Code Online (Sandbox Code Playgroud)

例外:

java.lang.NullPointerException
    javax.el.BeanELResolver.invoke(BeanELResolver.java:159)
    javax.el.CompositeELResolver.invoke(CompositeELResolver.java:84)
    org.apache.el.parser.AstValue.getValue(AstValue.java:157)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:238)
    com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:154)
    com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85)
    com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
    com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
    javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Run Code Online (Sandbox Code Playgroud)

如何requestScope在JSF页面以外使用?我当然可以有一个视图范围的bean,但我认为我可以直接使用范围变量.我有Mojarra 2.2.10的Tomcat 8.0.21.

jsf facelets el jsf-2 view-scope

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

Domino Data Services REST请求不断给出错误404

我按照这里的快速设置来运行DDS.我确信我做的正确,但是当我尝试针对测试应用程序的REST GET请求时,它只会一直返回404.有什么方法可以在服务器级别验证我的设置吗?

在我的服务器日志中,当我发出请求时,我看到:

HTTP Web服务器:找不到设计说明 - api/data/documents [/test/testmissupport.nsf/api/data/documents]匿名

rest lotus-notes lotus-domino

2
推荐指数
1
解决办法
2966
查看次数

xsp.application.timeout和"对象已被删除或回收"

我最近遇到了很多关于消失Java类级别Domino对象的问题.例如,我将a放置lotus.domino.Session到(非静态)类级变量,当我尝试在下一个代码行中使用它时,我得到:

NotesException: Object has been removed or recycled
Run Code Online (Sandbox Code Playgroud)

在我开始使用托管bean之前我没有遇到这些问题,但现在我似乎总是使用请求范围的bean以及普通的Java对象来获取它们.我一直在isRecycled()给很多地方添加支票,并一直想知道为什么我以前不必这样做.我知道Domino对象不是序列化的,而是在它们停留在请求或代理的持续时间之前.

今天我复制了将此异常的代码复制到另一个db,并且没有发生异常.然后我将xsp.properties从该db 复制到原始db,并且在那里也没有发生异常.通过一次删除一行,我发现如果我有这个:

xsp.application.timeout=10
Run Code Online (Sandbox Code Playgroud)

我没有得到异常,如果我删除它,我得到例外.有谁理解为什么?默认值应为30分钟,但我的会话对象似乎在纳秒内消失,除非我设置应用程序超时.我将会话从SSJS传递给Java并将其存储在构造函数代码中:

private Session session;    

public Domino(Session session) {
    this.session = session;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,这不是托管bean.我测试的Domino版本是9.0.1但我需要在8.5.2中使用此代码.代码在beforePageLoad事件中运行.

似乎我的问题已经解决但我想了解这里发生了什么.

UPDATE1

如果我等待一段时间(可能超过10分钟)然后重新加载XPage,我仍然会在主数据库中收到错误.在另一个db我从来没有得到错误.

UPDATE2

昨天我从数据库中添加了完整的xsp.properties,它一直在工作.现在8小时后它仍然可以在我的原始数据库中正常工作.看起来我也需要这个:

xsp.persistence.mode=basic
Run Code Online (Sandbox Code Playgroud)

这意味着"将页面保留在内存中".似乎XPage在没有此设置的情况下立即(在单个HTTP请求中)被序列化.

xpages xpages-ssjs

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