环境:JDK1.6 weblogic10.3 EJB3.0 JSF1.2 WEB2.5
无法注入EJB
TestEvent.java Java codepackage com.nec.jp.sdetest.jsf;import javax.ejb.EJB;import com.nec.jp.sdetest.ejb.ITestEjbLogicBean;
import com.nec.jp.sdetest.ejb.TestEjbInputData;
import com.nec.jp.sdetest.ejb.TestEjbResultData;public class TestEvent implements java.io.Serializable{ @EJB(name="TestEarProject/TestEjbLogicBean/local") // ITestEjbLogicBean iTestEjbLogicBean=new TestEjbLogicBean();
ITestEjbLogicBean iTestEjbLogicBean; public String select1 (){
//ELResolverを取得します。
//javax.faces.context.FacesContext facesContext = javax.faces.context.FacesContext.getCurrentInstance();
//javax.el.ELContext elcontext = facesContext.getELContext();
//javax.faces.application.Application application = facesContext.getApplication();
//指定したManagedBeanを返します。
//Object managedBean = application.getELResolver().getValue(elcontext, null, "ManageBeanName"); // own from
javax.faces.context.FacesContext facesContext = javax.faces.context.FacesContext.getCurrentInstance();
javax.el.ELContext elcontext = facesContext.getELContext();
javax.faces.application.Application application = facesContext.getApplication();
TestForm managedBean = (TestForm)application.getELResolver().getValue(elcontext, null, "TestForm");
TestEjbInputData inputData = new TestEjbInputData();
inputData.setInputCd(managedBean.getInputCd());
TestEjbResultData resultData = iTestEjbLogicBean.execute(null, inputData);
String price = resultData.getPrice().toString();
managedBean.setPrice(price);
return "next";
// return null;
// own to
}
}
ITestEjbLogicBean.java Java code
package com.nec.jp.sdetest.ejb;import com.nec.jp.sdetest.ejb.*;import javax.ejb.Local;
import javax.ejb.TransactionAttribute;@Local
public interface ITestEjbLogicBean { public com.nec.jp.sdetest.ejb.TestEjbResultData execute(
com.nec.jp.sdetest.ejb.ContextData context,
com.nec.jp.sdetest.ejb.TestEjbInputData inputData);
}
TestEjbLogicBean.java Java code
package com.nec.jp.sdetest.ejb;import java.sql.SQLException;
import java.util.List;import com.nec.jp.sdetest.db.ProductDAO;
import com.nec.jp.sdetest.db.ProductDTO;
import com.nec.jp.sdetest.ejb.*;import javax.ejb.TransactionAttribute;
import javax.ejb.Stateless;/**
* TestEjbLogicBean LogicBeanクラス
*/
@Stateless
public class TestEjbLogicBean implements com.nec.jp.sdetest.ejb.ITestEjbLogicBean{ public TestEjbLogicBean(){
}
@TransactionAttribute
public com.nec.jp.sdetest.ejb.TestEjbResultData execute(
com.nec.jp.sdetest.ejb.ContextData context,
com.nec.jp.sdetest.ejb.TestEjbInputData inputData){
com.nec.jp.sdetest.ejb.TestEjbResultData resultData = new com.nec.jp.sdetest.ejb.TestEjbResultData();
// own from
List<ProductDTO> list = null;
ProductDTO dto = new ProductDTO();
ProductDAO productDAO = new ProductDAO();
dto.setIN1(inputData.getInputCd());
try {
list = productDAO.read(dto);
} catch (SQLException e) {
}
resultData.setPrice(list.get(0).getPRICE());
// own to return resultData;
}
}
无法注入EJB
TestEvent.java Java codepackage com.nec.jp.sdetest.jsf;import javax.ejb.EJB;import com.nec.jp.sdetest.ejb.ITestEjbLogicBean;
import com.nec.jp.sdetest.ejb.TestEjbInputData;
import com.nec.jp.sdetest.ejb.TestEjbResultData;public class TestEvent implements java.io.Serializable{ @EJB(name="TestEarProject/TestEjbLogicBean/local") // ITestEjbLogicBean iTestEjbLogicBean=new TestEjbLogicBean();
ITestEjbLogicBean iTestEjbLogicBean; public String select1 (){
//ELResolverを取得します。
//javax.faces.context.FacesContext facesContext = javax.faces.context.FacesContext.getCurrentInstance();
//javax.el.ELContext elcontext = facesContext.getELContext();
//javax.faces.application.Application application = facesContext.getApplication();
//指定したManagedBeanを返します。
//Object managedBean = application.getELResolver().getValue(elcontext, null, "ManageBeanName"); // own from
javax.faces.context.FacesContext facesContext = javax.faces.context.FacesContext.getCurrentInstance();
javax.el.ELContext elcontext = facesContext.getELContext();
javax.faces.application.Application application = facesContext.getApplication();
TestForm managedBean = (TestForm)application.getELResolver().getValue(elcontext, null, "TestForm");
TestEjbInputData inputData = new TestEjbInputData();
inputData.setInputCd(managedBean.getInputCd());
TestEjbResultData resultData = iTestEjbLogicBean.execute(null, inputData);
String price = resultData.getPrice().toString();
managedBean.setPrice(price);
return "next";
// return null;
// own to
}
}
ITestEjbLogicBean.java Java code
package com.nec.jp.sdetest.ejb;import com.nec.jp.sdetest.ejb.*;import javax.ejb.Local;
import javax.ejb.TransactionAttribute;@Local
public interface ITestEjbLogicBean { public com.nec.jp.sdetest.ejb.TestEjbResultData execute(
com.nec.jp.sdetest.ejb.ContextData context,
com.nec.jp.sdetest.ejb.TestEjbInputData inputData);
}
TestEjbLogicBean.java Java code
package com.nec.jp.sdetest.ejb;import java.sql.SQLException;
import java.util.List;import com.nec.jp.sdetest.db.ProductDAO;
import com.nec.jp.sdetest.db.ProductDTO;
import com.nec.jp.sdetest.ejb.*;import javax.ejb.TransactionAttribute;
import javax.ejb.Stateless;/**
* TestEjbLogicBean LogicBeanクラス
*/
@Stateless
public class TestEjbLogicBean implements com.nec.jp.sdetest.ejb.ITestEjbLogicBean{ public TestEjbLogicBean(){
}
@TransactionAttribute
public com.nec.jp.sdetest.ejb.TestEjbResultData execute(
com.nec.jp.sdetest.ejb.ContextData context,
com.nec.jp.sdetest.ejb.TestEjbInputData inputData){
com.nec.jp.sdetest.ejb.TestEjbResultData resultData = new com.nec.jp.sdetest.ejb.TestEjbResultData();
// own from
List<ProductDTO> list = null;
ProductDTO dto = new ProductDTO();
ProductDAO productDAO = new ProductDAO();
dto.setIN1(inputData.getInputCd());
try {
list = productDAO.read(dto);
} catch (SQLException e) {
}
resultData.setPrice(list.get(0).getPRICE());
// own to return resultData;
}
}
@EJB(name="TestEarProject/TestEjbLogicBean/local")
ITestEjbLogicBean iTestEjbLogicBean;
TestEjbResultData resultData = iTestEjbLogicBean.execute(null, inputData);
调用时iTestEjbLogicBean=null。
注掉@EJB(name="TestEarProject/TestEjbLogicBean/local")申明对象去new接口的实现类ITestEjbLogicBean iTestEjbLogicBean=new TestEjbLogicBean(); 工程运行正常
情報: Initializing Mojarra (1.2_09-b02-FCS) for context '/TestWebProject'
2009/03/06 20:56:12 com.sun.faces.spi.InjectionProviderFactory getProviderInstance
致命的: JSF1030: The specified InjectionProvider implementation 'com.bea.faces.WeblogicInjectionProvider' cannot be loaded.
2009/03/06 20:56:12 com.sun.faces.spi.InjectionProviderFactory createInstance
情報: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods ed with these annotations will have said annotations processed.
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.PRETTY_HTML' found, using default value true
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.ALLOW_JAVASCRIPT' found, using default value true
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON' found, using default value false
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.SAVE_FORM_SUBMIT_LINK_IE' found, using default value false
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS' found, using default value true
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.RENDER_VIEWSTATE_ID' found, using default value true
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.STRICT_XHTML_LINKS' found, using default value true
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getLongInitParameter
情報: No context init parameter 'org.apache.myfaces.CONFIG_REFRESH_PERIOD' found, using default value 2
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.VIEWSTATE_JAVASCRIPT' found, using default value false
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.DETECT_JAVASCRIPT' found, using default value false
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.AUTO_SCROLL' found, using default value false
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getStringInitParameter
情報: No context init parameter 'org.apache.myfaces.ADD_RESOURCE_CLASS' found, using default value org.apache.myfaces.renderkit.html.util.DefaultAddResource
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getStringInitParameter
情報: No context init parameter 'org.apache.myfaces.RESOURCE_VIRTUAL_PATH' found, using default value /faces/myFacesExtensionResource
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig getBooleanInitParameter
情報: No context init parameter 'org.apache.myfaces.CHECK_EXTENSIONS_FILTER' found, using default value true
2009/03/06 20:56:49 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig createAndInitializeMyFacesConfig
情報: Starting up Tomahawk on the RI-JSF-Implementation.
2009/03/06 20:56:51 com.sun.faces.application.ActionListenerImpl processAction
javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: java.lang.NullPointerException
at com.nec.jp.sdetest.jsf.TestEvent.select(TestEvent.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 23 more
2009/03/06 20:56:51 com.sun.faces.lifecycle.InvokeApplicationPhase execute
警告: #{TestEvent.select}: java.lang.NullPointerException
javax.faces.FacesException: #{TestEvent.select}: java.lang.NullPointerException
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
... 22 more
Caused by: java.lang.NullPointerException
at com.nec.jp.sdetest.jsf.TestEvent.select(TestEvent.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 23 more
试下;
用到的jar包:
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\log4j-1.2.15.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\javassist-3.4.ga.zip
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\asm.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\dom4j-1.6.1.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\hibernate3.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\jta-1.1.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\antlr-2.7.6.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\slf4j-api-1.5.6.ja
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\cglib-2.1.3.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\slf4j-jdk14-1.5.6.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\javax.jsf_1.2.0.0.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\glassfish.jstl_1.2.0.1.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\glassfish.jsf_1.2.3.2.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\spring.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\commons-logging-1.1.1.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\commons-logging-api-1.1.jar
set CLASSPATH=%CLASSPATH%;E:\bea\wlserver_10.3\server\lib\commons-collections-3.2.1.jar
呵呵,EJB的引用和依赖注入都不错