当我尝试在此配置中使用 Arquilian 运行测试时出现以下错误:
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [JLTProcessorBeanRemote] with qualifiers [@Default] at injection point [[field] @Inject protected com.hp.atlantico.jlt.services.JLTProcessorBeanTest.processorBean]
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:274)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:243)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:106)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:126)
at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:345)
at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:330)
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:366)
at org.jboss.arquillian.container.weld.ee.embedded_1_1.mock.TestContainer.startContainer(TestContainer.java:273)
at org.jboss.arquillian.container.weld.ee.embedded_1_1.WeldEEMockContainer.deploy(WeldEEMockContainer.java:105)
at org.jboss.arquillian.container.impl.client.container.ContainerDeployController$3.call(ContainerDeployController.java:161)
at org.jboss.arquillian.container.impl.client.container.ContainerDeployController$3.call(ContainerDeployController.java:128)
at org.jboss.arquillian.container.impl.client.container.ContainerDeployController.executeOperation(ContainerDeployController.java:271)
at org.jboss.arquillian.container.impl.client.container.ContainerDeployController.deploy(ContainerDeployController.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
at org.jboss.arquillian.container.impl.client.ContainerDeploymentContextHandler.createDeploymentContext(ContainerDeploymentContextHandler.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
at org.jboss.arquillian.container.impl.client.ContainerDeploymentContextHandler.createContainerContext(ContainerDeploymentContextHandler.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
at org.jboss.arquillian.container.impl.client.container.DeploymentExceptionHandler.verifyExpectedExceptionDuringDeploy(DeploymentExceptionHandler.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
at org.jboss.arquillian.container.impl.client.container.ContainerDeployController$1.perform(ContainerDeployController.java:95)
at org.jboss.arquillian.container.impl.client.container.ContainerDeployController$1.perform(ContainerDeployController.java:80)
at org.jboss.arquillian.container.impl.client.container.ContainerDeployController.forEachDeployment(ContainerDeployController.java:263)
at org.jboss.arquillian.container.impl.client.container.ContainerDeployController.forEachManagedDeployment(ContainerDeployController.java:239)
at org.jboss.arquillian.container.impl.client.container.ContainerDeployController.deployManaged(ContainerDeployController.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
at org.jboss.arquillian.container.test.impl.client.ContainerEventController.execute(ContainerEventController.java:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)
at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:80)
at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:182)
at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:314)
at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46)
at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:199)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:147)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
豆子:
@Named
@Stateless(mappedName = "JLTProcessorBean")
public class JLTProcessorBean implements JLTProcessorBeanRemote,
JLTProcessorBeanLocal, JLTConst {
/** The connection factory. */
@Resource(mappedName = "java:/ConnectionFactory")
private ConnectionFactory connectionFactory;
/** The queue jdf2 process. */
@Resource(mappedName = "java:/jlt/jms/JDFProcessQueue")
private Queue queueJdf2Process;
/** The queue. */
@Resource(mappedName = "java:/jlt/jms/JLTProcessPageQueue")
private Queue queueJltConveter;
/** The queue response. */
@Resource(mappedName = "java:/jlt/jms/ResponseReturnQueue")
private Queue queueResponse;
/** The request dao. */
@EJB
protected RequestDAO requestDAO;
/** The logger. */
protected Logger logger = Logger.getLogger(JLTProcessorBean.class);
/** The Constant MISSING_PAGE_TO_PROCESS. */
protected static final String MISSING_PAGE_TO_PROCESS = "Request %s: Total Pages %d, Processed Pages %d";
/**
* The file layers page partern. *
* <FileName>-P<PageNumber>E<PageElement>S<PageLayer>.icf
* */
private static String FILE_LAYERS_PAGE_PARTERN = "{0}-P{1}*.icf";
/** The file ini partern. */
private static String FILE_INI_PARTERN = "{0}.ini";
/**
* Default constructor.
*/
public JLTProcessorBean() {
}
/** {@inheritDoc} */
@Override
public void processFile(String returnUrl, JDFNode doc, String queryEntry)
throws JLTProcessorException {
Connection connection = null;
Session session = null;
MessageProducer producer = null;
try {
JltFuncParam jltFuncParam = parserJdfDoc(doc.getJDFRoot());
String jltFileName = getName(jltFuncParam.getInputFile());
int descompressResult = JltService.getJltService().descompressJlt(
jltFuncParam);
if (descompressResult != 0) {
String messageByCode = findMessageByCode(descompressResult);
throw new JLTProcessorException(ERROR_DECOMPRESSING_FILE,
new Object[] { jltFileName, messageByCode });
}
Request request = redData(format(FILE_INI_PARTERN, jltFileName));
request.setIdentifier(jltFuncParam.getId());
request.setCreationDate(new Date());
request.setUpdateDate(request.getCreationDate());
request.setReturnUrl(returnUrl);
request.setQueryEntry(queryEntry);
request.setJobId(doc.getJobID(false));
request.setOriginalJdf(doc.toXML().getBytes());
request = requestDAO.saveOrUpdate(request);
File outputDirectory = new File(
getFullPath(jltFuncParam.getOutputFile()));
String fileWildcard = "";
ICFFuncParam icfFuncParam = null;
connection = connectionFactory.createConnection();// 1ms
session = connection
.createSession(true, Session.SESSION_TRANSACTED);// 1ms
producer = session.createProducer(queueJltConveter); // 1ms
MapMessage objMessage = null;
//
Page page = null;
for (int pageNumber = 0; pageNumber < request.getPageCount(); pageNumber++) {
page = new Page();
page.setPageNumber(pageNumber);
icfFuncParam = new ICFFuncParam();
fileWildcard = format(FILE_LAYERS_PAGE_PARTERN, jltFileName,
pageNumber);
for (File file : listFiles(outputDirectory,
new WildcardFileFilter(fileWildcard), null)) {
page.addLayer(new Layer(file.getAbsolutePath()));
}
page = requestDAO.saveOrUpdate(page);
icfFuncParam.setConversionIntent(jltFuncParam
.getConversionIntent());
icfFuncParam.setFileType(jltFuncParam.getFileType());
icfFuncParam.setImageResolution(jltFuncParam
.getImageResolution());
icfFuncParam.setIndigoTransparency(jltFuncParam
.isIndigoTransparency());
//
icfFuncParam.setOutputFile(outputDirectory.getAbsolutePath());
//
icfFuncParam.setCmykIcc(jltFuncParam.getCmykIcc());
icfFuncParam.setRgbIcc(jltFuncParam.getRgbIcc());
objMessage = session.createMapMessage();
objMessage.setObject(ICF_PARAMS, icfFuncParam);
objMessage.setObject(REQUEST_ID, request.getId());
objMessage.setObject(PAGE_NUMBER, pageNumber);
producer.send(objMessage);
}
} catch (Exception e) {
throw new JLTProcessorException(e);
} finally {
try {
producer.close();
session.close();
connection.close();
} catch (JMSException e) {
throw new EJBException(e);
}
}
}
/** {@inheritDoc} */
@Override
public String queueJdfToProcess(String returnURL, JDFDoc doc)
throws JLTProcessorException {
Connection connection = null;
Session session = null;
MessageProducer producer = null;
try {
connection = connectionFactory.createConnection();// 1ms
session = connection
.createSession(true, Session.SESSION_TRANSACTED);// 1ms
producer = session.createProducer(queueJltConveter); // 1ms
MapMessage mapMessage = session.createMapMessage();
mapMessage.setString(RETURN_URL, returnURL);
mapMessage.setObject(JDF_NODE, doc.getJDFRoot());
producer.send(mapMessage);
return mapMessage.getJMSMessageID();
} catch (Exception e) {
throw new JLTProcessorException(e);
} finally {
try {
producer.close();
session.close();
connection.close();
} catch (JMSException e) {
throw new EJBException(e);
}
}
}
/** {@inheritDoc} */
@Override
public void verifyRequestCompletion(Request request)
throws JLTProcessorException {
Long processedPages = requestDAO.countProcessedPages(request.getId());
if (processedPages.intValue() == request.getPageCount()) {
JDFDoc doc = new JDFDoc(ElementName.JMF);
JDFJMF jmf = doc.getJMFRoot();
JDFMessage jdfMessage = jmf.appendMessageElement(
EnumFamily.Command, EnumType.ReturnQueueEntry);
JDFReturnQueueEntryParams returnParams = jdfMessage
.appendReturnQueueEntryParams();
returnParams.setQueueEntryID(request.getQueryEntry());
} else {
logger.warn(format(MISSING_PAGE_TO_PROCESS,
request.getIdentifier(), request.getPageCount(),
processedPages));
}
}
}
测试类:
@RunWith(Arquillian.class)
public class JLTProcessorBeanTest {
@Inject @New
@Named
protected JLTProcessorBeanRemote processorBean;
@Deployment
public static JavaArchive createTestArchive() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(JLTProcessorBean.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Test
public void queueJdfToProcessTest() throws JLTProcessorException {
JDFDoc doc = new JDFDoc();
processorBean.queueJdfToProcess("", doc);
}
/**
* @param processorBean
* the processorBean to set
*/
public void setProcessorBean(JLTProcessorBeanRemote processorBean) {
this.processorBean = processorBean;
}
}
arquilian.xml
<arquillian xmlns="http://jboss.org/schema/arquillian"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<!-- Uncomment to have test archives exported to the file system for inspection -->
<!-- <engine> -->
<!-- <property name="deploymentExportPath">target/</property> -->
<!-- </engine> -->
<!-- Example configuration for a remote JBoss Enterprise Application Platform
6 or AS 7 instance -->
<container qualifier="jboss" default="true">
<!-- By default, arquillian will use the JBOSS_HOME environment variable.
Alternatively, the configuration below can be uncommented. -->
<!--<configuration> -->
<!--<property name="jbossHome">/path/to/jboss/as</property> -->
<!--</configuration> -->
<protocol type="Servlet 3.0" />
</container>
你能帮助我吗?