Erro JSF + EJB

Ola pessoa estou fazendo um totorial em ejb mais ao gravar no banco ele da o sequinte erro:

AVISO: /web/ordemProducao/Create.xhtml @19,303 value="#{ordemProducaoController.selected.ordemProducaoPK.idOrdem}": Target Unreachable, 'null' returned null
javax.el.PropertyNotFoundException: /web/ordemProducao/Create.xhtml @19,303 value="#{ordemProducaoController.selected.ordemProducaoPK.idOrdem}": Target Unreachable, 'null' returned null
        at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:93)
        at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
        at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1008)
        at javax.faces.component.UIInput.validate(UIInput.java:934)
        at javax.faces.component.UIInput.executeValidate(UIInput.java:1189)
        at javax.faces.component.UIInput.processValidators(UIInput.java:691)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
        at javax.faces.component.UIForm.processValidators(UIForm.java:243)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
        at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1180)
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:619)

segue o bean


package beans;

import modelo.OrdemProducao;
import beans.util.JsfUtil;
import beans.util.PaginationHelper;
import dao.OrdemProducaoFacade;

import java.util.ResourceBundle;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

@ManagedBean (name="ordemProducaoController")
@SessionScoped
public class OrdemProducaoController {

    private OrdemProducao current;
    private DataModel items = null;
    @EJB private dao.OrdemProducaoFacade ejbFacade;
    private PaginationHelper pagination;
    private int selectedItemIndex;

    public OrdemProducaoController() {
    }

    public OrdemProducao getSelected() {
        if (current == null) {
            current = new OrdemProducao();
            selectedItemIndex = -1;
        }
        return current;
    }

    private OrdemProducaoFacade getFacade() {
        return ejbFacade;
    }

    public PaginationHelper getPagination() {
        if (pagination == null) {
            pagination = new PaginationHelper(10) {

                @Override
                public int getItemsCount() {
                    return getFacade().count();
                }

                @Override
                public DataModel createPageDataModel() {
                    return new ListDataModel(getFacade().findRange(new int[]{getPageFirstItem(), getPageFirstItem()+getPageSize()}));
                }
            };
        }
        return pagination;
    }

    public String prepareList() {
        recreateModel();
        return "List";
    }

    public String prepareView() {
        current = (OrdemProducao)getItems().getRowData();
        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
        return "View";
    }

    public String prepareCreate() {
        current = new OrdemProducao();
        selectedItemIndex = -1;
        return "Create";
    }

    public String create() {
        try {
            getFacade().create(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("OrdemProducaoCreated"));
            return prepareCreate();
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
            return null;
        }
    }

    public String prepareEdit() {
        current = (OrdemProducao)getItems().getRowData();
        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
        return "Edit";
    }

    public String update() {
        try {
            getFacade().edit(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("OrdemProducaoUpdated"));
            return "View";
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
            return null;
        }
    }

    public String destroy() {
        current = (OrdemProducao)getItems().getRowData();
        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
        performDestroy();
        recreateModel();
        return "List";
    }

    public String destroyAndView() {
        performDestroy();
        recreateModel();
        updateCurrentItem();
        if (selectedItemIndex >= 0) {
            return "View";
        } else {
            // all items were removed - go back to list
            recreateModel();
            return "List";
        }
    }

    private void performDestroy() {
        try {
            getFacade().remove(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("OrdemProducaoDeleted"));
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
        }
    }

    private void updateCurrentItem() {
        int count = getFacade().count();
        if (selectedItemIndex >= count) {
            // selected index cannot be bigger than number of items:
            selectedItemIndex = count-1;
            // go to previous page if last page disappeared:
            if (pagination.getPageFirstItem() >= count) {
                pagination.previousPage();
            }
        }
        if (selectedItemIndex >= 0) {
            current = getFacade().findRange(new int[]{selectedItemIndex, selectedItemIndex+1}).get(0);
        }
    }

    public DataModel getItems() {
        if (items == null) {
            items = getPagination().createPageDataModel();
        }
        return items;
    }

    private void recreateModel() {
        items = null;
    }

    public String next() {
        getPagination().nextPage();
        recreateModel();
        return "List";
    }

    public String previous() {
        getPagination().previousPage();
        recreateModel();
        return "List";
    }

    public SelectItem[] getItemsAvailableSelectMany() {
        return JsfUtil.getSelectItems(ejbFacade.findAll(), false);
    }

    public SelectItem[] getItemsAvailableSelectOne() {
        return JsfUtil.getSelectItems(ejbFacade.findAll(), true);
    }

    @FacesConverter(forClass=OrdemProducao.class)
    public static class OrdemProducaoControllerConverter implements Converter {

        private static final String SEPARATOR = "#";
        private static final String SEPARATOR_ESCAPED = "\\#";

        public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
            if (value == null || value.length() == 0) {
                return null;
            }
            OrdemProducaoController controller = (OrdemProducaoController)facesContext.getApplication().getELResolver().
                    getValue(facesContext.getELContext(), null, "ordemProducaoController");
            return controller.ejbFacade.find(getKey(value));
        }

        modelo.OrdemProducaoPK getKey(String value) {
            modelo.OrdemProducaoPK key;
            String values[] = value.split(SEPARATOR_ESCAPED);
            key = new modelo.OrdemProducaoPK();
            key.setIdOrdem(Integer.parseInt(values[0]));
            key.setMateriaPrimaIdMateria(Integer.parseInt(values[1]));
            key.setProdutoAcabadoIdProdutoAcabado(Integer.parseInt(values[2]));
            return key;
        }

        String getStringKey(modelo.OrdemProducaoPK value) {
            StringBuffer sb = new StringBuffer();
            sb.append(value.getIdOrdem());
            sb.append(SEPARATOR);
            sb.append(value.getMateriaPrimaIdMateria());
            sb.append(SEPARATOR);
            sb.append(value.getProdutoAcabadoIdProdutoAcabado());
            return sb.toString();
        }

        public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
            if (object == null) {
                return null;
            }
            if (object instanceof OrdemProducao) {
                OrdemProducao o = (OrdemProducao) object;
                return getStringKey(o.getOrdemProducaoPK());
            } else {
                throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: "+OrdemProducaoController.class.getName());
            }
        }

    }

}

segue o jsf


<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">

    <ui:composition template="/template.xhtml">
        <ui:define name="title">
            <h:outputText value="#{bundle.CreateOrdemProducaoTitle}"></h:outputText>
        </ui:define>
        <ui:define name="body">
            <h:panelGroup id="messagePanel" layout="block">
                <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
            </h:panelGroup>
            <h:form>
                <h:panelGrid columns="2">
                    <h:outputLabel value="#{bundle.CreateOrdemProducaoLabel_ordemProducaoPK_idOrdem}" for="ordemProducaoPK_idOrdem" />
                    <h:inputText id="ordemProducaoPK_idOrdem" value="#{ordemProducaoController.selected.ordemProducaoPK.idOrdem}" title="#{bundle.CreateOrdemProducaoTitle_ordemProducaoPK_idOrdem}" required="false" requiredMessage="#{bundle.CreateOrdemProducaoRequiredMessage_ordemProducaoPK_idOrdem}"/>
                    <h:outputLabel value="#{bundle.CreateOrdemProducaoLabel_materiaPrima}" for="materiaPrima" />
                    <h:selectOneMenu id="materiaPrima" value="#{ordemProducaoController.selected.materiaPrima}" title="#{bundle.CreateOrdemProducaoTitle_materiaPrima}" required="true" requiredMessage="#{bundle.CreateOrdemProducaoRequiredMessage_materiaPrima}">
                        <f:selectItems value="#{materiaPrimaController.itemsAvailableSelectOne}"/>
                    </h:selectOneMenu>
                    <h:outputLabel value="#{bundle.CreateOrdemProducaoLabel_produtoAcabado}" for="produtoAcabado" />
                    <h:selectOneMenu id="produtoAcabado" value="#{ordemProducaoController.selected.produtoAcabado}" title="#{bundle.CreateOrdemProducaoTitle_produtoAcabado}" required="true" requiredMessage="#{bundle.CreateOrdemProducaoRequiredMessage_produtoAcabado}">
                        <f:selectItems value="#{produtoAcabadoController.itemsAvailableSelectOne}"/>
                    </h:selectOneMenu>
                </h:panelGrid>
                <br />
                <h:commandLink action="#{ordemProducaoController.create}" value="#{bundle.CreateOrdemProducaoSaveLink}" />
                <br />
                <br />
                <h:commandLink action="#{ordemProducaoController.prepareList}" value="#{bundle.CreateOrdemProducaoShowAllLink}" immediate="true"/>
                <br />
                <br />
                <h:commandLink value="#{bundle.CreateOrdemProducaoIndexLink}" action="/index" immediate="true" />
            </h:form>
        </ui:define>
    </ui:composition>

</html>

Algo esta retornando null, mais eu nao estou conseguindo ver onde eu estancio ele no controller

O ordemProducaoController.selected.ordemProducaoPK.idOrdem está vindo como null.

instancia o objeto (= new ()) q resolve…