beans.xml file and java.lang.UnsupportedOperationException: JBAS011859: Naming context is read-only

后端 未结 3 1174
迷失自我
迷失自我 2020-12-29 16:13

I have very strange exception after starting using beans.xml file in our EJB and jar files.
We use JBoss7.1.1 release.
Our app

相关标签:
3条回答
  • 2020-12-29 16:59

    For use in eclipse (run and debug), open server properties, launch configuration properties and set the VM arguments: -Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true

    0 讨论(0)
  • 2020-12-29 17:03

    I am able to manage this. Add a patch in naming jar. Just change org.jboss.as.naming.service.NamingStoreService -> readOnly = true

    Full java class -

    public class NamingStoreService implements Service<ServiceBasedNamingStore> {
    
    private final boolean readOnly = false;
    private volatile ServiceBasedNamingStore store;
    
    public NamingStoreService() {
        this(false);
        System.out.println("Setting readOnly "+readOnly);
    }
    
    public NamingStoreService(boolean readOnly) {
        System.out.println("Setting readOnly "+readOnly);
    }
    
    /**
     * Creates the naming store if not provided by the constructor.
     *
     * @param context The start context
     * @throws StartException If any problems occur creating the context
     */
    public void start(final StartContext context) throws StartException {
        if(store == null) {
            final ServiceRegistry serviceRegistry = context.getController().getServiceContainer();
            final ServiceName serviceNameBase = context.getController().getName();
            final ServiceTarget serviceTarget = context.getChildTarget();
            store = readOnly ? new ServiceBasedNamingStore(serviceRegistry, serviceNameBase) : new WritableServiceBasedNamingStore(serviceRegistry, serviceNameBase, serviceTarget);
        }
    }
    
    /**
     * Destroys the naming store.
     *
     * @param context The stop context
     */
    public void stop(StopContext context) {
        if(store != null) {
            try {
                store.close();
                store = null;
            } catch (NamingException e) {
                throw MESSAGES.failedToDestroyRootContext(e);
            }
        }
    }
    
    /**
     * Get the context value.
     *
     * @return The naming store
     * @throws IllegalStateException
     */
    public ServiceBasedNamingStore getValue() throws IllegalStateException {
        return store;
    }
    }
    
    0 讨论(0)
  • 2020-12-29 17:05

    This is a known issue when using jersey. Try to add below option to your jvm, which will fix your issue. If you are running the jboss server from eclipse then add to the server runtime configuration. If you are starting the jboss from command prompt using standalone.bat then add the below option to standalone.conf.bat. Similarly if you are using *Nix then add to standalone.conf.

    set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true"
    
    0 讨论(0)
提交回复
热议问题