0


我有一个在 JBoss AS 7.1.1 上运行的基于 Java EE 6 CDI 的应用程序,它也包含一些会话 Bean。

@Stateless
public class OrderService   {
@Inject
private Logger log;

@Inject
private EntityManager em;

    . . . . .

}

一切正常,直到我不得不将我的 SLSB 公开为 SOAP Web 服务。所以我必须提供一个接口并声明 Web 服务:

@Stateless
@Remote(OrderServiceItf.class)
@WebService
public class OrderService implements OrderServiceItf  {

@Inject
private Logger log;

@Inject
private EntityManager em;

    . . . . .
}

@WebService
public interface OrderServiceItf  {
. . . .
}

不幸的是,一旦我部署应用程序,无论我在哪里使用这个 Bean,我都会得到以下 WELD 异常: org.jboss.weld.exceptions.DeploymentException: WELD-001408 在注入点 [[field] 带有限定符 [@Default] 的类型 [OrderService] 的不满足依赖关系] @Inject com.telco.service.SendMessageService.orderService]

public class SendMessageService implements Serializable {
@Inject
private Logger logger;

int money;
@Inject OrderService orderService;

}

任何帮助我该如何解决这个问题?非常感谢!

4

1 回答 1

1

You can use @Typed(OrderService) and you should be good. This changes the metadata for that bean and instead of being of the interface type, CDI will recognize your EJB as the concrete type.

于 2013-01-13T15:35:19.533 回答