Erro ao carregar página com Primefaces

Boa noite pessoal;

Estou realizando alguns estudos com Primefaces e resolvi montar um projeto simples. O resultado é uma tremenda dor de cabeça para executar uma página que contém código primefaces. Não sei porque motivo o código não encontra uma classe específica que coloquei em um atributo do ManagedBean que controla a página. Vou postar os itens do projeto aqui para que vocês possam encontrar alguma possível irregularidade que até agora não consegui encontrar.
Por favor pessoal, eu agradeço a ajuda desde já. Todos os itens estão listados abaixo, caso haja mais algum detalhe, é só pedir.

A página XHTML com Primefaces:

<html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:p="http://primefaces.org/ui">
   
  <h:head>
   
  </h:head>
   
  <h:body>
        <h:form>
       	 	<p:messages id="messages" />
              <p:panelGrid columns="2">
                   <p:outputLabel for="nomeUsuario" value="Nome Usuário:" />
                   <p:inputText id="nomeUsuario" value="#{LoginMB.usuario.nomeUsuario}" />
                    
                    <p:outputLabel for="senha" value="Senha:" />
                    <p:password id="senha" value="#{LoginMB.usuario.senha}" />
                    
                    <p:commandButton value="Enviar" icon="ui-icon-star" action="#{LoginMB.login()}" ajax="false">
                    </p:commandButton>
   
              </p:panelGrid>
        </h:form>
  </h:body>
  </html>

O arquivo web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	version="3.1">
	<display-name>br.com.CorporateWeb</display-name>
	<welcome-file-list>
		<welcome-file>/index.xhtml</welcome-file>
	</welcome-file-list>
	<error-page>
		<exception-type>javax.faces.application.ViewExpiredException</exception-type>
		<location>/index.xhtml</location>
	</error-page>
	<servlet>
		<servlet-name>FacesServlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>FacesServlet</servlet-name>
		<url-pattern>*.xhtml</url-pattern>
	</servlet-mapping>
</web-app>

A classe MANAGEDBEAN

package br.com.setInndex.managedBeans;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;

import br.com.setInndex.DAO.UsuarioDAO;
import br.com.setInndex.modelos.Usuario;

@ManagedBean(name = "LoginMB")
@ViewScoped

public class LoginManagedBean {

	private UsuarioDAO usuarioDAO = new UsuarioDAO();

	private Usuario usuario = new Usuario();

	public String login() {

		if (usuario.getNomeUsuario().length() == 0) {
			FacesContext.getCurrentInstance().addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, "O nome do usuário não pode ser nulo.",
							"Erro no Login!"));
			return null;
		}
		if (usuario.getSenha().length() == 0) {
			FacesContext.getCurrentInstance().addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, "Por favor, digite a senha.",
							"Erro no Login!"));
			return null;
		}

		usuario = usuarioDAO.logarUsuario(usuario.getNomeUsuario(), usuario.getSenha());

		if (usuario == null) {
			usuario = new Usuario();
			FacesContext.getCurrentInstance().addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuário não encontrado!",
							"Erro no Login!"));
			return null;
		} else {
			return "/main";
		}


	}

}

A estrutura do Projeto:

As dependências no POM

<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>5.2.1.Final</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<version>5.2.1.Final</version>
		</dependency>
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>9.4.1209.jre7</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.persistence</groupId>
			<artifactId>javax.persistence</artifactId>
			<version>2.1.1</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>5.2.4.Final</version>
		</dependency>
		<dependency>
			<groupId>org.primefaces</groupId>
			<artifactId>primefaces</artifactId>
			<version>6.0</version>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.faces</artifactId>
			<version>2.2.13</version>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.5</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>

E por fim, o Erro gerado quando tento acessar a página LOGIN.XHTML

javax.servlet.ServletException: /login.xhtml @15,91 value="#{LoginMB.usuario.nomeUsuario}": Property 'usuario' not found on type br.com.setInndex.managedBeans.LoginManagedBean
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

javax.el.PropertyNotFoundException: /login.xhtml @15,91 value="#{LoginMB.usuario.nomeUsuario}": Property 'usuario' not found on type br.com.setInndex.managedBeans.LoginManagedBean
	com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	javax.faces.component.UIOutput.getValue(UIOutput.java:174)
	javax.faces.component.UIInput.getValue(UIInput.java:291)
	org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:94)
	org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:58)
	org.primefaces.component.inputtext.InputTextRenderer.encodeMarkup(InputTextRenderer.java:71)
	org.primefaces.component.inputtext.InputTextRenderer.encodeEnd(InputTextRenderer.java:52)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
	org.primefaces.component.panelgrid.PanelGridRenderer.encodeDynamicBody(PanelGridRenderer.java:131)
	org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableBody(PanelGridRenderer.java:102)
	org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableLayout(PanelGridRenderer.java:65)
	org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:37)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
	com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
	com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

O erro está dizendo que não está conseguindo achar a propriedade usuario no seu ManagedBean.

Isso ocorre porque você declarou ele como private, e o JSF não tem como acessar as propriedades private sem os métodos getters e setters implementados. Tente implementar esses métodos e nos avise.

Muito obrigado Marcus, é isso mesmo mano. Após implementar os getters and setters na ManagedBean deu tudo certo. Mas eu fiquei bem intrigado mesmo.
Aproveitando a boa vontade, a forma de programar a ManagedBean está correto mesmo? Pois eu não consegui compreender bem o sentido de manter o objeto UsuarioDAO e Usuario como atributos da ManagedBean do Login. Mesmo seguindo um tutorial para me familiarizar com o JSF, não compreendi muito bem o motivo de manter esses objetos como atributos.
Existe uma forma mais correta de se produzir um ManagedBean ou eu estou no caminho certo?

Desde já agradeço mais uma vez pela ajuda pessoal!

É assim mesmo, você precisa manter os objetos no seu ManagedBean.
O usuário serve para você manipular seus atributos, e o DAO para operações em Banco de Dados.

Eu costumo fazer, entre o DAO e o Backingbean, uma classe chamada Service. Que faz a ligação entre a View e o Banco de Dados, e as validações eu coloco dentro do Service.
Desta maneira eu não possuo uma referência do DAO dentro do meu Back, mas sim uma referência do Service, que é Java puro, sem JSF ou acesso a banco.

Abraço!

Mais uma vez obrigado. Ajudou muito mesmo.
Podem finalizar o tópico galera.