2012-03-08 5 views
1

Oracle 데이터베이스로 SQL 조회를 수행하고 변수 SessionTTL, MAXACTIVEUSERS 및 ACTIVEUSERS의 컨텐츠를 리턴하는 관리 Bean을 가지고 있습니다. 그런 다음 변수 내용이 JSF 페이지에 표시됩니다.관리 Bean에서 SQL 문을 실행하십시오.

내 질문은 SQL 쿼리에서 여러 결과를 가져 오는 현재 방법이며 빈이로드 된 직후 GetVariablesDB() 메서드를 활용하는 연결 방법은 무엇입니까? GetVariablesDB() 메서드가 호출되지 않기 때문에 아래의이 코드는 null 변수를 표시합니다.

[#|2012-03-08T18:37:44.233+0200|INFO|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=3393;_ThreadName=Thread-2;|Deleted /tmp/osgiapp6154116770873802943|#] 

[#|2012-03-08T18:37:44.233+0200|INFO|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=3393;_ThreadName=Thread-2;|Undeployed bundle com.DX_57.SM_57 [275]|#] 

[#|2012-03-08T18:37:44.234+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=3393;_ThreadName=Thread-2;|Stopped com.DX_57.SM_57 [275]|#] 

[#|2012-03-08T18:37:44.240+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=3393;_ThreadName=Thread-2;|Uninstalled com.DX_57.SM_57 [275]|#] 

[#|2012-03-08T18:37:44.432+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=3398;_ThreadName=Thread-2;|com.sun.webui.jsf.component.DropDown::The current value of component propertyForm:deployTable:topActionsGroup1:filter does not match any of the selections. 
Did you forget to reset the value after changing the options? |#] 

[#|2012-03-08T18:37:54.363+0200|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=3942;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context , because request parameters have already been read, or ServletRequest.getReader() has already been called|#] 

[#|2012-03-08T18:37:54.458+0200|INFO|glassfish3.1.2|org.glassfish.admingui|_ThreadID=3942;_ThreadName=Thread-2;|GUI deployment: uploadToTempfile|#] 

[#|2012-03-08T18:37:54.459+0200|INFO|glassfish3.1.2|org.glassfish.admingui|_ThreadID=3942;_ThreadName=Thread-2;|uploadFileName=SM_57-1.0-SNAPSHOT.war|#] 

[#|2012-03-08T18:37:54.527+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=68;_ThreadName=Thread-2;|Installed com.DX_57.SM_57 [276] from reference:file:/opt/glassfish3/glassfish/domains/domain1/applications/SM_57-1.0-SNAPSHOT/|#] 

[#|2012-03-08T18:37:54.540+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=68;_ThreadName=Thread-2;|Started com.DX_57.SM_57 [276]|#] 

[#|2012-03-08T18:37:54.569+0200|INFO|glassfish3.1.2|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=68;_ThreadName=Thread-2;|SM_57-1.0-SNAPSHOT was successfully deployed in 96 milliseconds.|#] 

[#|2012-03-08T18:37:54.614+0200|INFO|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=57;_ThreadName=Thread-2;|Expanded at file:/tmp/osgiapp8052165052141203090/|#] 

[#|2012-03-08T18:37:55.059+0200|INFO|glassfish3.1.2|org.glassfish.osgiweb|_ThreadID=57;_ThreadName=Thread-2;|total number of classes with faces annotation = 0|#] 

[#|2012-03-08T18:37:55.083+0200|INFO|glassfish3.1.2|javax.enterprise.resource.webcontainer.jsf.config|_ThreadID=57;_ThreadName=Thread-2;|Initializing Mojarra 2.1.6 (SNAPSHOT 20111206) for context '/SM_57-1.0-SNAPSHOT'|#] 

[#|2012-03-08T18:37:55.093+0200|INFO|glassfish3.1.2|org.glassfish.osgiweb|_ThreadID=57;_ThreadName=Thread-2;|Faces Config uris excluding the ones named as faces-config.xml = []|#] 

[#|2012-03-08T18:37:55.141+0200|INFO|glassfish3.1.2|org.glassfish.osgiweb|_ThreadID=57;_ThreadName=Thread-2;|Facelet Config uris = []|#] 

[#|2012-03-08T18:37:55.142+0200|INFO|glassfish3.1.2|javax.enterprise.resource.webcontainer.jsf.config|_ThreadID=57;_ThreadName=Thread-2;|Monitoring jndi:/server/SM_57-1.0-SNAPSHOT/WEB-INF/faces-config.xml for modifications|#] 

[#|2012-03-08T18:37:55.165+0200|INFO|glassfish3.1.2|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=57;_ThreadName=Thread-2;|WEB0671: Loading application [com.DX_57.SM_57_1.0.0.SNAPSHOT] at [/SM_57-1.0-SNAPSHOT]|#] 

[#|2012-03-08T18:37:55.183+0200|INFO|glassfish3.1.2|org.glassfish.osgiweb|_ThreadID=57;_ThreadName=Thread-2;|Registered ServletContext as a service with properties: {osgi.web.symbolicname=com.DX_57.SM_57, osgi.web.version=1.0.0.SNAPSHOT, osgi.web.contextpath=/SM_57-1.0-SNAPSHOT} |#] 

[#|2012-03-08T18:37:55.186+0200|INFO|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=57;_ThreadName=Thread-2;|deployed bundle com.DX_57.SM_57 [276] at file:/tmp/osgiapp8052165052141203090/|#] 

[#|2012-03-08T18:38:03.560+0200|SEVERE|glassfish3.1.2|javax.enterprise.resource.webcontainer.jsf.application|_ThreadID=322;_ThreadName=Thread-2;|Error Rendering View[/Settings.xhtml] 
com.sun.faces.mgbean.ManagedBeanCreationException: Cant instantiate class: com.DX_57.SM_57.Dashboard. 
    at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:193) 
    at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102) 
    at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) 
    at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) 
    at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) 
    at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) 
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) 
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 
    at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:103) 
    at com.sun.el.parser.AstValue.getValue(AstValue.java:179) 
    at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224) 
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) 
    at javax.faces.component.UIOutput.getValue(UIOutput.java:169) 
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205) 
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355) 
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312) 
    at com.sun.faces.renderkit.html_basic.TableRenderer.renderHeader(TableRenderer.java:337) 
    at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:95) 
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820) 
    at javax.faces.component.UIData.encodeBegin(UIData.java:1118) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) 
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) 
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) 
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) 
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: java.sql.SQLException 
    at com.DX_57.SM_57.Dashboard.GetVariablesDB(Dashboard.java:70) 
    at com.DX_57.SM_57.Dashboard.<init>(Dashboard.java:49) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at java.lang.Class.newInstance0(Class.java:372) 
    at java.lang.Class.newInstance(Class.java:325) 
    at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188) 
    ... 55 more 
|#] 

SQL 문이 Java 코드가 정확 : 내가 글래스 피쉬에서이 오류 스택을 얻을 빈을 실행하려고 할 때

P.S 나는 이제 코드

import java.io.Serializable; 
import javax.enterprise.context.SessionScoped; 
    // or import javax.faces.bean.SessionScoped; 
import javax.inject.Named; 
/* include package for SHA-256 encryption */ 
import java.security.NoSuchAlgorithmException; 
/* include SQL Packages */ 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import javax.sql.DataSource; 
import javax.annotation.Resource; 
import javax.faces.context.FacesContext; 
import javax.inject.Inject; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 
    // or import javax.faces.bean.ManagedBean; 

import org.glassfish.osgicdi.OSGiService; 

@Named("DashboardController") 

@SessionScoped 

public class Dashboard implements Serializable { 

    private String storedPassword = null;    
    private String stringzoro = null;  
    private String stringone = null; 
    private String stringtwo = null; 
    private String SQL_Statement = null; 


     public Dashboard() throws SQLException{  
      GetVariablesDB(); 
     } 

     /* Call the Oracle JDBC Connection driver */ 
     @Resource(name="jdbc/Oracle") 
     private DataSource ds; 


     public String getUser(){ 
      return stringzoro;  
     } 

     public String getPassword(){ 
      return stringone; 
     } 




     private void GetVariablesDB() throws SQLException {   

      if (ds == null) throw new SQLException();  
     Connection conn = ds.getConnection(); 
      if (conn == null) throw new SQLException();  

     try { 
      conn.setAutoCommit(false); 
      boolean committed = false; 
       try { 
         SQL_Statement = "SELECT * from GLOBALSETTINGS"; 

         PreparedStatement passwordQuery = conn.prepareStatement(SQL_Statement); 

         ResultSet result = passwordQuery.executeQuery(); 

         if(result.next()){ 
          stringzoro= result.getString("SessionTTL"); 
          stringone = result.getString("MAXACTIVEUSERS"); 
          stringtwo = result.getString("ACTIVEUSERS");        
         } 

         conn.commit(); 
         committed = true; 
       } finally { 
         if (!committed) conn.rollback(); 
         } 
      } 
       finally {    
       conn.close(); 

       } 

     }       
} 

을 편집?

+1

잘, 당신은 구문에서'GetVariablesDB' 메쏘드를 사용하거나 여러분의 JSP에서이 함수에 대한 내부 호출을 할 수 있습니다 –

+0

실제 코드에'GetVariablesDB()'메소드의 라인 번호를 추가 할 수 있습니까? –

+0

여기에 있습니다 : http://pastebin.com/wBDMnTHb –

답변

1

생성자에서 GetVariablesDB()를 호출하기 만하면됩니다. 인스턴스 변수와 메소드가 공개 된 이유는 무엇입니까?

사이트 시작시 데이터가 필요한 경우 생성자에서 데이터를 초기화해야하며 그렇지 않은 경우 특정 이벤트에서 public 메소드를 호출해야합니다.

그리고 더 나은 가독성을 위해이 키워드를 사용하거나 명명 규칙을 사용하여 인스턴스 변수를 atleast 표시해야합니다. 이름이나 액세스 한정자로 변수의 범위를 구별 할 수없는 경우 코드를 따르기가 어렵습니다.

관련 문제