2016-06-15 9 views
1

NetBeans (v8.1) 및 TomEE + (v1.7.4)에서 EJB를 사용하여 데이터에 액세스하는 방법을 알아 내려고 노력했습니다.TomEE 용 데이터 소스를 설정하는 방법 +

나는 The NetBeans E-commerce Tutorial (Affable Bean 앱)을 따라 갔고 나는 Accessing Data with EJBs에 머물렀다. 튜토리얼에있는 모든 편집 작업을보고 실행시 오류가 발생했습니다.

AffableBean 로그 :

build-impl.xml:1045: The module has not been deployed. 
See the server log for details. 

아파치 TomEE + 1.7.4 로그 :

Jun 15, 2016 8:26:14 AM org.apache.catalina.core.ApplicationContext log 
INFO: Marking servlet ControllerServlet as unavailable 
Jun 15, 2016 8:26:14 AM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet [ControllerServlet] in web application [/AffableBean] threw load() exception 
javax.naming.NameNotFoundException: Name [controller.ControllerServlet/categoryFacade] is not bound in this Context. Unable to find [controller.ControllerServlet]. 

아파치 TomEE + 1.7.4 다음의 persistence.xml 같이이기

INFO: Configuring PersistenceUnit(name=AffableBeanPU) 
Jun 15, 2016 8:26:11 AM org.apache.openejb.config.AutoConfig deploy 
WARNING: Found matching datasource: web/connpool but this one is not a JTA datasource 
Jun 15, 2016 8:26:11 AM org.apache.openejb.config.AutoConfig deploy 
WARNING: Found matching datasource: web/connpool but this one is not a JTA datasource 
Jun 15, 2016 8:26:11 AM org.apache.tomee.catalina.TomcatWebAppBuilder startInternal 
SEVERE: Unable to deploy collapsed ear in war StandardEngine[Catalina].StandardHost[localhost].StandardContext[/AffableBean] 
org.apache.openejb.OpenEJBException: PeristenceUnit AffableBeanPU <jta-data-source> points to a non jta managed Resource. Update Resource "connpool" to "JtaManaged=true", use a different Resource, or delete the <jta-data-source> element and a default will be supplied if possible. 

내 코드 튜토리얼에 따라 :

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="AffableBeanPU" transaction-type="JTA"> 
    <jta-data-source>connpool</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties/> 
     <property name="eclipselink.logging.level" value="FINEST"/> 
    </persistence-unit> 
</persistence> 

제 질문은, 어떻게 내 IDE에서 DataSource/EJB를 설정하여 내 서버에서 실행할 수 있습니까? Netbeans 전자 상거래 자습서에 관계없이.

편집 : Accessing Data with EJBs에 붙어 있습니다.

답변

1

$ TOMEE/conf/tomee.xml 파일에 정의 된 전역 데이터 소스 (또는 모든 WEBAPP 용) 또는 $ WEBAPP/WEB-INF/resources.xml 파일의 webapp에 고유 한 데이터 소스로 정의 할 수 있습니다 $ WEBAPP/WEB-INF에 정의 된 웹 애플리케이션의 SRC/META-INF 디렉토리

<?xml version="1.0" encoding="UTF-8"?> 
<persistence 
    version="2.0" 
    xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="xyz"> 
     <jta-data-source>xyz</jta-data-source> 
     <properties> 
      <property 
       name="openjpa.jdbc.DBDictionary" 
       value="org.apache.openjpa.jdbc.sql.OracleDictionary" /> 
      <property 
       name="openjpa.jdbc.DBDictionary" 
       value="oracle(maxEmbeddedBlobSize=-1,maxEmbeddedClobSize=-1)" /> 
      <property 
       name="openjpa.jdbc.SynchronizeMappings" 
       value="buildSchema(ForeignKeys=true)" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

및 데이터 소스에서이

의 persistence.xml/resource.xml

<?xml version="1.0" encoding="UTF-8"?> 
<tomee> 
    <Resource 
     id="xyz" 
     type="DataSource"> 
     JdbcDriver oracle.jdbc.OracleDriver 
     JdbcUrl jdbc:oracle:thin:@localhost:1521:XE 
     UserName myuser 
     Password mypass 
     JtaManaged true 
     TestOnBorrow false 
     MaxActive 20   
    </Resource>  
</tomee> 

http://tomee.apache.org/datasource-config.html 참조 및 http://tomee.apache.org/common-datasource-configurations.html

+0

코드 및 링크에 감사드립니다. 나는 나중에 시험 할 것이다. 이 튜토리얼은 $ WEBAPP/src/conf/persistence.xml에 정의 된 데이터 소스를 사용한다. TomEE가 $ WEBAPP/WEB-INF/resource.xml에 있어야하는지 알고 있습니까? – CarlosFMeneses

+0

아니요, TomEE는'$ WEBAPP/src/conf/persistence.xml'이나'$ WEBAPP/WEB-INF/resource.xml'을 요구하지 않습니다. 그것들은 확실히 작동하지만, 이식성이없는 WAR 파일을 생성합니다. '$ TOMEE/tomee.xml' 파일에 같은 줄을 넣으면 구성이 컨테이너에 대신 저장됩니다. –

+0

안녕하세요 @ 레오. resource.xml 파일에서 제안과 함께 놀았습니까? 빌드가 실패했습니다. 서버 로그 :'SEVERE : FAIL ... ProductFacade : PersistenceContext ref "em"에 필요한 persistence.xml이 "AffableBeanPU"단위로 누락되었습니다. 적어도이 튜토리얼에서는 persistence.xml 파일에 필요하다고 생각된다. 내가 조사하면 더 조사하고 다시보고 할 것입니다. 그래도 옳은 방향으로 나를 가리켜 주셔서 감사합니다. 감사합니다! – CarlosFMeneses