Forgot screenshot / configuration,
adam
Adam Bien schrieb:
> Hi All,
>
>
>
> I ran into following problem: Direct changes in the database (SQL
> updates) performed in the same Bean-method, and so transaction, are
> not visible for the EntityManager (subsequent find).
>
> Even invoking EntityManager#clear does not solve the problem. The
> problem is strange, I suspect that the DB-connection from the
> datasource does not participate in the TX. This would explain such
> behaviour.
>
>
>
> Server: Glassfishv2u2
>
> Database: OracleXE
>
>
>
> The Bean looks like:
>
>
>
>
>
> @Stateless
>
> @Remote(VehicleManager.class)
>
> @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
>
> public class VehicleManagerBean implements VehicleManager {
>
>
>
> @PersistenceContext
>
> private EntityManager entityManager;
>
> @Resource(mappedName = "jdbc/db1")
>
> * private DataSource dataSource;*
>
> @EJB
>
> private DataService dataService;
>
>
>
>
>
> public Vehicle findChangeDBClearFind(int id, String newColor) {
>
> Vehicle vehicle = this.find(id);
>
> try {
>
>
>
> //changes the color of the vehicle directly in the DB
>
> * this.changeVehiclesColor(id, newColor);*
>
> * * } catch (Exception e) {
>
> throw new EJBException("Problem executing statement" + e, e);
>
> }
>
> this.entityManager.clear();
>
> return this.find(id);
>
> }
>
> private void changeVehiclesColor(int id, String color) throws
> Exception {
>
> Connection connection = this.dataSource.getConnection();
>
> Statement statement = connection.createStatement();
>
> String sqlStatement = "update vehicle set color=\'" + color +
> "\' where id=" + id;
>
> System.out.println(sqlStatement);
>
> int updatedRecords = statement.executeUpdate(sqlStatement);
>
> if (updatedRecords != 1) {
>
> throw new IllegalStateException("Vehicle with id: " + id +
> " cannot be updated!");
>
> }
>
> connection.close();
>
> statement.close();
>
> }
>
>
>
>
>
>
>
> I deployed the same code to WLS 10 and it worked - the changes were
> visible. I suppose it is probably a configuration problem. I tried
> with different DataSource configurations - with no effect. I attached
> my current configuration as well (screenshot).
>
>
>
> Hopefully I overlooked something. If not - I will file it as a bug.
>
>
>
> Thank you in advance,
>
>
>
> regards,
>
>
>
> adam bien
>
>
>
--
Consultant, Author, Java Champion
Homepage: www.adam-bien.com
Weblog: blog.adam-bien.com
eMail: abien_at_adam-bien.com
Mobile: 0049(0)170 280 3144
Books: Enterprise Architekturen (ISBN: 393504299X),
Java EE 5 Architekturen (ISBN: 3939084247),
J2EE Patterns, J2EE Hotspots, Enterprise Frameworks and Struts