я получаю следующее сообщение об ошибке, когда моя Webservice вызывается:Как для поиска не-JTA-данных источника/JTA,-источника данных с помощью веб-сервиса
org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property.
Класс Webservice является Bascially пытается использовать JPA для вставки данных, и на основе вышеприведенного сообщения об ошибке, что кажется EntityManager наклоняет доступ к записи источника данных, как показано ниже:
<persistence-unit name="TEST_P" transaction-type="RESOURCE_LOCAL">
<provider>
com.ibm.websphere.persistence.PersistenceProviderImpl
</provider>
<non-jta-data-source>java:comp/env/jdbc/DATA</non-jta-data-source>
<class>jpa.WSTGHandler</class>
<properties>
</properties>
</persistence-unit>
Я также определил запись источника данных в web.xml, как показано ниже:
<resource-ref>
<res-ref-name>java:comp/env/jdbc/DATA</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
Внедрение JPA-кода в In Servlet позволяет найти источник данных. как я могу заставить Webservice работать одинаково?
PS: Я использую Websphere 7, JPA версии 1.2 и JAX-WS
В соответствии с просьбой follwing класс вызывается INT он метод Webservice т.е. BeginTransaction()
public class EntityManagerHelper {
private static final EntityManagerFactory emf;
private static final ThreadLocal<EntityManager> threadLocal;
private static final Logger logger;
static {
emf = Persistence.createEntityManagerFactory("TEST_P");
threadLocal = new ThreadLocal<EntityManager>();
logger = Logger.getLogger("TEST_P");
logger.setLevel(Level.FINE);
}
public static EntityManager getEntityManager() {
EntityManager manager = threadLocal.get();
if (manager == null || !manager.isOpen()) {
manager = emf.createEntityManager();
threadLocal.set(manager);
}
return manager;
}
public static void closeEntityManager() {
EntityManager em = threadLocal.get();
threadLocal.set(null);
if (em != null) em.close();
}
public static void beginTransaction() {
getEntityManager().getTransaction().begin();
}
public static void commit() {
getEntityManager().getTransaction().commit();
}
public static void rollback() {
getEntityManager().getTransaction().rollback();
}
public static Query createQuery(String query) {
return getEntityManager().createQuery(query);
}
public static void log(String info, Level level, Throwable ex) {
logger.log(level, info, ex);
}
}
Можете ли вы добавить JPA-код для вставки данных, откуда происходит исключение –