2012-05-20 33 views
1

我最近將應用程序從JBoss AS 4.2.1遷移到JBoss AS 7.1,但由於出現以下錯誤,我無法訪問應用程序vua http請求:嘗試在JBoss AS 7.1中訪問我的應用程序時出錯

HTTP Status 500 - 

type Exception report 

message 

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Unable to instantiate Action, payment.PaymentBean, defined for 'prepayment' in namespace '/payment'javax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory org.jnp.interfaces.NamingContextFactory from classloader ModuleClassLoader for Module "deployment.TPGWeb.war:main" from Service Module Loader - action - vfs:/content/TPGWeb.war/WEB-INF/classes/struts.xml:26:64 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:518) 
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421) 

根源

Unable to instantiate Action, payment.PaymentBean, defined for 'prepayment' in namespace '/payment'javax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory org.jnp.interfaces.NamingContextFactory from classloader ModuleClassLoader for Module "deployment.TPGWeb.war:main" from Service Module Loader - action - vfs:/content/TPGWeb.war/WEB-INF/classes/struts.xml:26:64 
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:289) 
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:360) 
com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38) 
com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:78) 
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) 
com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:70) 
com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:66) 
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189) 
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41) 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:497) 
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421) 

根源

java.lang.RuntimeException: javax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory org.jnp.interfaces.NamingContextFactory from classloader ModuleClassLoader for Module "deployment.TPGWeb.war:main" from Service Module Loader 
utils.ResourceCenter.lookupGatewaySecurityBean(ResourceCenter.java:76) 
payment.PaymentBean.<init>(PaymentBean.java:39) 
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
java.lang.reflect.Constructor.newInstance(Constructor.java:532) 
java.lang.Class.newInstance0(Class.java:372) 
java.lang.Class.newInstance(Class.java:325) 
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:121) 
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:152) 
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:141) 
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:111) 
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:270) 
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:360) 
com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38) 
com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:78) 
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) 
com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:70) 
com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:66) 
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189) 
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41) 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:497) 
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421) 

根源

javax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory org.jnp.interfaces.NamingContextFactory from classloader ModuleClassLoader for Module "deployment.TPGWeb.war:main" from Service Module Loader 
org.jboss.as.naming.InitialContextFactoryBuilder.createInitialContextFactory(InitialContextFactoryBuilder.java:64) 
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:681) 
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305) 
javax.naming.InitialContext.init(InitialContext.java:240) 
javax.naming.InitialContext.<init>(InitialContext.java:192) 
utils.ResourceCenter.lookupGatewaySecurityBean(ResourceCenter.java:66) 
payment.PaymentBean.<init>(PaymentBean.java:39) 
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
java.lang.reflect.Constructor.newInstance(Constructor.java:532) 
java.lang.Class.newInstance0(Class.java:372) 
java.lang.Class.newInstance(Class.java:325) 
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:121) 
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:152) 
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:141) 
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:111) 
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:270) 
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:360) 
com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38) 
com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:78) 
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) 
com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:70) 
com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:66) 
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189) 
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41) 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:497) 
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421) 

note The full stack trace of the root cause is available in the JBoss Web/7.0.13.Final logs. 
JBoss Web/7.0.13.Final 
+0

在哪裏部署的位置,如JB7,我們部署不同 – Satya

+0

我的應用程序部署在獨立/部署到JBoss 7.1 –

+0

那麼你需要重新檢查代碼 – Satya

回答

3

將「Dependencies:org.jboss.remote-naming」添加到.WAR文件的META-INF/manifest.mf中。這將加載org.jboss.remote命名模塊並消除「Failed instantiate InitialContextFactory」異常。詳情點擊這裏:https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7

使用jboss-ejb-client.properties文件,並將其放置到WEB-INF文件夾VS了這樣的內容:

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false 
remote.connections=default 
remote.connection.default.host=your host 
remote.connection.default.port=your port 
remote.connection.default.username=you user 
remote.connection.default.password=you password 
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false 

和查找這種方式:

Properties jndiProps = new Properties(); 
jndiProps.puy(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 
jndiProps.put(Context.SECURITY_PRINCIPAL, JBOSS_USER); 
jndiProps.put(Context.SECURITY_CREDENTIALS, JBOSS_PWD); 
jndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); 
jndiProps.put(Context.PROVIDER_URL, "remote://yourhost:yourport"); 
InitialContext initialContext = new InitialContext(jndiProps); 
YourRemote remote=(YourRemote)initialContext.lookup("java:/app-name/ejb-jar-name/YourBean!package.YourRemote"); 

對於詳情見: https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI

祝你好運!

+0

我愛你,浪費了6個小時後你救了我。 – user1028269

0

從上面的文章「添加」依賴項:org.jboss.remote -naming「到您的.WAR文件的META-INF/manifest.mf。」

非常感謝上述幫助。它讓我更近一步地遷移到JBoss EAP 6.

上面的替代方案,如果您有必須在非JBoss服務器上部署的War文件,那麼將以下內容添加到jboss-deployment- structure.xml文件。

這有利於將JBoss特定元素分離到他們自己的JBoss特定文件。

<sub-deployment name="yourWebApp.war"> 
    <dependencies> 
    <module name="org.jboss.remote-naming" /> 
    </dependencies> 
</sub-deployment> 

問候, 歐文

相關問題