我们创建了一个自定义对象管理器,我们希望将其绑定到实现,以便我们可以将用于自定义对象处理的管理器注入到我们的盒式管道中。
我们已经创建了 Mgr 接口和实现,并按照 Intershop 食谱中的说明将实现绑定到接口:
这是 objectgraph.properties 的内容:
global.modules = hr.a1.core.internal.modules.AppCoreA1NamingModule
这是 AppCoreA1NamingModule.java 的内容:
/*
* AppCoreA1NamingModule AppCoreA1NamingModule.java.
*
* Copyright (c) 2018 OptimIT d.o.o.. All rights reserved.
*/
package hr.a1.core.internal.modules;
import javax.inject.Singleton;
import com.intershop.beehive.core.capi.naming.AbstractNamingModule;
import hr.a1.core.postpaid.capi.A1PostpaidPriceMgr;
import hr.a1.core.postpaid.internal.A1PostpaidPriceMgrImpl;
/**
* The Class AppCoreA1NamingModule.
*/
public class AppCoreA1NamingModule extends AbstractNamingModule {
/**
* Configure.
*/
@Override
protected void configure() {
bindManager(A1PostpaidPriceMgr.class).to(A1PostpaidPriceMgrImpl.class).in(Singleton.class);
}
}
这是项目结构:
但是,当我们启动服务器或尝试使用管理器时,会出现以下异常:
1) No implementation for hr.a1.core.postpaid.capi.A1PostpaidPriceMgr was bound.
while locating hr.a1.core.postpaid.capi.A1PostpaidPriceMgr
for field at hr.a1.service.product.pipelet.ESBCreatePrices.a1PostpaidPriceMgr(ESBCreatePrices.java:34)
while locating hr.a1.service.product.pipelet.ESBCreatePrices
build.gradle 源码:
apply plugin: 'java-cartridge'
apply plugin: 'static-cartridge'
apply plugin: 'com.intershop.gradle.cartridge-resourcelist'
intershop {
displayName = 'Core - Core cartridge for A1 Organization'
description = 'Core cartridge for A1 Organization'
}
dependencies {
compile group: 'com.intershop.platform', name: 'bc_mail'
compile group: 'com.intershop.platform', name: 'bc_service'
compile group: 'com.intershop.platform', name: 'orm'
compile group: 'com.intershop.business', name: 'bc_product'
compile group: 'com.intershop.business', name: 'bc_image'
compile group: 'com.intershop.business', name: 'xcs'
compile group: 'com.intershop.platform', name: 'cache'
compile group: 'com.intershop.platform', name: 'core'
compile group: 'com.intershop.platform', name: 'businessobject'
compile group: 'com.intershop.platform', name: 'bc_repository'
compile group: 'com.intershop.platform', name: 'bc_application'
compile group: 'com.intershop.platform', name: 'pf_property'
compile group: 'com.intershop.platform', name: 'app'
compile ('com.intershop.platform:pf_axis2')
{
exclude module: 'axiom-api'
exclude module: 'axiom-impl'
exclude module: 'axis2-kernel'
exclude module: 'axis2-transport-http'
exclude module: 'axis2-transport-local'
exclude module: 'geronimo-jta_1.1_spec'
exclude module: 'servlet-api'
exclude module: 'geronimo-activation_1.1_spec'
}
compile ('org.apache.axis2:axis2-kernel')
{
exclude module: 'axiom-api'
exclude module: 'axiom-impl'
exclude module: 'geronimo-activation_1.1_spec'
exclude module: 'geronimo-jta_1.1_spec'
exclude module: 'geronimo-ws-metadata_2.0_spec'
exclude module: 'geronimo-stax-api_1.0_spec'
exclude module: 'jsr311-api'
exclude module: 'neethi'
exclude module: 'servlet-api'
}
compile ('org.apache.axis2:axis2-transport-local')
{
exclude module: 'axis2-kernel'
exclude module: 'axiom-api'
exclude module: 'axiom-impl'
exclude module: 'jsr311-api'
exclude module: 'geronimo-jta_1.1_spec'
exclude module: 'servlet-api'
exclude module: 'geronimo-activation_1.1_spec'
}
compile ('org.apache.axis2:axis2-transport-http')
{
exclude module: 'axis2-kernel'
exclude module: 'axiom-api'
exclude module: 'axiom-impl'
exclude module: 'jsr311-api'
exclude module: 'geronimo-jta_1.1_spec'
exclude module: 'servlet-api'
exclude module: 'geronimo-activation_1.1_spec'
}
compile ('org.apache.ws.commons.axiom:axiom-api')
{
exclude module: 'geronimo-activation_1.1_spec'
exclude module: 'geronimo-stax-api_1.0_spec'
exclude module: 'jaxen'
exclude module: 'stax-api'
}
compile ('org.apache.axis2:axis2-adb')
{
exclude module: 'axiom-dom'
exclude module: 'axis2-kernel'
exclude module: 'geronimo-ws-metadata_2.0_spec'
exclude module: 'geronimo-activation_1.1_spec'
exclude module: 'geronimo-stax-api_1.0_spec'
}
compile ('commons-logging:commons-logging')
// https://mvnrepository.com/artifact/com.google.code.gson/gson
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
}
为了能够在我们的墨盒中注入和使用管理器,我们还需要做些什么吗?