Добавьте ресурс tomee.xml с параметрами конструктора

Попытка добавить "java.net.URL" в tomee.xml, но параметры не передаются конструктору. Вот дополнение к tomee.xml:

    <Resource id="someJndiName" class-name="java.net.URL" factory-name="URL" constructor="spec">
      spec http://google.com
    </Resource>

Это вызывает:

    INFO: Creating Resource(id=someJndiName)
    Dec 18, 2013 5:10:12 AM org.apache.openejb.util.OpenEJBErrorHandler handleUnknownError
    SEVERE: FATAL ERROR: Unknown error in Assembler.  Please send the following stack trace and this message to [email protected] :
     java.lang.NullPointerException
       at org.apache.xbean.recipe.ReflectionUtil.toParameterList(ReflectionUtil.java:1026)
       at org.apache.xbean.recipe.ReflectionUtil.findStaticFactory(ReflectionUtil.java:811)
       at org.apache.xbean.recipe.ObjectRecipe.findFactory(ObjectRecipe.java:538)
       at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:274)
       at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)

На основе ресурсов OpenEJB/TomEE: как это работает работает? код использует отражение для вызова конструктора и должен передавать параметр, но здесь это не так. Это ошибка или есть другой способ передать параметры конструктору?

Я попытался добавить запись в "%TomEE%/conf/system.properties", но ничего не изменилось.

    someJndiName.spec=http://google.com

Я попытался использовать конструктор с тремя параметрами для URL с тем же результатом.

    <Resource id="someJndiName" class-name="java.net.URL" factory-name="URL" constructor="protocol, host, file">
      protocol http
      host google.com
      file 
    </Resource>

Моя текущая потребность состоит в том, чтобы добавить объекты "java.net.URL" к ресурсам сервера, но возможность добавлять произвольные объекты с использованием этого общего метода была бы очень полезной.

Нужно ли создавать какой-либо класс обработчика для обработки «java.net.URL» как ресурса TomEE?


person jbnimble    schedule 18.12.2013    source источник


Ответы (1)


у вас все еще есть эта проблема? Это работает в TomEE 7.1.0.

resources.xml:

<resources>
    <Resource id="myURL"
              class-name="java.net.URL"
              constructor="spec">
        spec http://google.com
    </Resource>
</resources>

Application.java:

package com.test.application;

import lombok.extern.slf4j.Slf4j;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.Startup;
import javax.enterprise.context.ApplicationScoped;
import java.net.URL;

@Slf4j
@Startup
@ApplicationScoped
public class Application {

    @Resource(name = "myURL")
    private URL url;

    @PostConstruct
    private void init() {
        log.info("URL={}", url);
    }
}
person James    schedule 26.02.2019