GVKun编程网logo

java – Spring事务不能正常运行JAX WS JDBC(spring事务不起作用)

11

此处将为大家介绍关于java–Spring事务不能正常运行JAXWSJDBC的详细内容,并且为您解答有关spring事务不起作用的相关问题,此外,我们还将为您介绍关于Ajax无法正常运行JSF2.2、

此处将为大家介绍关于java – Spring事务不能正常运行JAX WS JDBC的详细内容,并且为您解答有关spring事务不起作用的相关问题,此外,我们还将为您介绍关于Ajax无法正常运行JSF 2.2、eclipse的debug突然模式不能正常运行,但非debug模式却能正常运行、java day60【 Spring 中的 JdbcTemplate[会用] 、Spring 中的事务控制 、Spring5 的新特性[了解] 】、Java spring boot使用spring jdbc连接多个数据库的有用信息。

本文目录一览:

java – Spring事务不能正常运行JAX WS JDBC(spring事务不起作用)

java – Spring事务不能正常运行JAX WS JDBC(spring事务不起作用)

我对这个问题有点恼怒.让我们检查是否有人实现了类似的东西.

我有一个带有8个WS的java 8 Web应用程序.一些这样的WS,通过JDBCTemplate进行插入和更新(由于性能需要,Hibernate不是一个选择),如果执行因异常而崩溃,我需要它们回滚.

我在spring app上下文文件中有以下数据源和事务管理器配置(Tomcat的server.xml / context.xml中的jndi资源):

  diobjectfactorybean">
        

另一方面,我有一个dataBase DBcontroller.class的唯一访问点,它有一个插入,删除和更新的通用方法:

private NamedParameterJdbcTemplate jdbcTemplate;
private DataSource datasource;

@Autowired
public void setDataSource(DataSource dataSource) {
    this.datasource = dataSource;
    this.jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
@Override
public boolean queryForModifying(String query,sqlParameterSource parameters) {

  int modifiedRows= 0;
  try {
      modifiedRows= this.jdbcTemplate.update(query,parameters);
  } catch (Exception e) {
      e.printstacktrace();
      numRegistrosAfectados = 0;
  }
  return (modifiedRows> 0) ? true : false;
}

最后我有一个WS接口这样:

@WebService
public interface IService{

    @WebMethod
    public method(MethodRequestType request) throws IllegalArgumentException,illegalaccessexception;

}

实施:

@WebService(endpointInterface = "com.package.IService")
@HandlerChain(file = "handler-chain.xml")
public class Service implements IService{

    @Autowired
    IDBController dbController;

使用“交易”方法:

@Transactional
private boolean inserts(HashMap

它应该在非WS项目上正常工作,但正如我发现没有那么简单的方法来完成这项工作.

首先我认为它没有回滚,但现在我很确定它不会创建交易.

stackoverflow中有一些类似的帖子,但没有一个能解决我的问题.我已经谷歌了很多,建议的唯一方法是WS-AtomicTransactions,我从未听说过.

我已经尝试了几乎所有的XML配置文件,我甚至尝试以编程方式管理事务,但由于它是一个连接池,我无法将自动提交设置为false,因此我可以强制回滚.

因为如果它对任何人都有用,我为每个WS实现了肥皂处理程序,看起来像这样:

public class ServiceHandler implements SOAPHandler
最佳答案
重要的是你调用@Transactional注释的方法.例如,如果你有:

@Service
public class Service1 {

    @Transactional
    public void method1() { ... }

    public void method2() {
        method1();
    }
}

@Service
public class Service2 {

    @Autowired
    private Service1 service1;

    public void method1() {
        service1.method1();
    }

    public void method2() {
        service1.method2();
    }
}

>调用service2.method2()不会创建事务.
>调用service2.method1()将创建一个.

由于Spring处理Proxies和AOP的方式.

Ajax无法正常运行JSF 2.2

Ajax无法正常运行JSF 2.2

我将JSF 2.2与TomCat
6一起使用。执行ajax函数时,不会更新字段。我创建了一个只有一个控制器和一个页面的新项目,即使如此,ajax调用也不起作用。它调用方法,但不更新页面。

    <!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:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:rich="http://richfaces.org/rich" xmlns:a4j="http://richfaces.org/a4j" xmlns:ajax="https://ajax4jsf.dev.java.net/ajax">

<h:head>
</h:head>
<h:body>

    <h:form id="formTest">
        <h:outputLabel value="#{teste.teste}" id="testando" />
        <h:inputText value="#{teste.teste}" />
        <a4j:commandButton action="#{teste.agir}" render="formTest" execute="formTest" />

    </h:form>
</h:body>

</html>

控制器:

@ManagedBean(name = "teste")
@SessionScoped
public class Teste {

private String teste = "oi";

public void agir() {
teste = "666666";
System.out.println(getTeste());
}

public String getTeste() {
return teste;
}

public void setTeste(String teste) {
this.teste = teste;
}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>Try</display-name>
      <welcome-file-list>
        <welcome-file>index.jsf</welcome-file>

      </welcome-file-list>
      <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
     </servlet>
      <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
     </servlet-mapping>
     <context-param>
        <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
      </context-param>
      <context-param>
        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
       <param-value>resources.application</param-value>
      </context-param>
      <listener>
       <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
     </listener>
    </web-app>

eclipse的debug突然模式不能正常运行,但非debug模式却能正常运行

eclipse的debug突然模式不能正常运行,但非debug模式却能正常运行

现象:以eclipse的debug模式启动,控制台不报错,但是就是web页面出不来,非debug模式一切正常。 
原因: 原来是eclipse的debug断点设置不正确造成了debug调试模式不能正常运行。 
解决办法:eclipse的debug模式窗口里清空所有 dubug断点,然后启动,呵呵,故障排除。

java day60【 Spring 中的 JdbcTemplate[会用] 、Spring 中的事务控制 、Spring5 的新特性[了解] 】

java day60【 Spring 中的 JdbcTemplate[会用] 、Spring 中的事务控制 、Spring5 的新特性[了解] 】

第1章 Spring 中的 JdbcTemplate[会用]

1.1JdbcTemplate 概述

1.2JdbcTemplate 对象的创建

1.3spring 中配置数据源

1.3.1 环境搭建

1.3.2 编写 spring 的配置文件

1.3.3 配置数据源

1.3.3.1 配置 C3P0 数据源

1.3.3.2 配置 DBCP 数据源

1.3.3.3 配置 spring 内置数据源

 1.3.4 将数据库连接的信息配置到属性文件中:

1.4JdbcTemplate 的增删改查操作

1.4.1 前期准备

1.4.2 在 spring 配置文件中配置 JdbcTemplate

1.4.3 最基本使用

1.4.4 保存操作

1.4.5 更新操作

1.4.6 删除操作

1.4.7 查询所有操作

1.4.8 查询一个操作

1.4.9 查询返回一行一列操作

1.5在 dao 中使用 JdbcTemplate

1.5.1 准备实体类

1.5.2 第一种方式:在 dao 中定义 JdbcTemplate

1.5.3 第二种方式:让 dao 继承 JdbcDaoSupport

第2章 Spring 中的事务控制

2.1Spring 事务控制我们要明确的

2.2Spring 中事务控制的 API 介绍

2.2.1 PlatformTransactionManager

2.2.2 TransactionDefinition

2.2.2.1 事务的隔离级别

2.2.2.2 事务的传播行为

2.2.2.3 超时时间

2.2.2.4 是否是只读事务

2.2.3 TransactionStatus

2.3基于 XML 的声明式事务控制(配置方式)重点

2.3.1 环境搭建

2.3.1.1 第一步:拷贝必要的 jar 包到工程的 lib 目录

2.3.1.2 第二步:创建 spring 的配置文件并导入约束

2.3.1.3 第三步:准备数据库表和实体类

2.3.1.4 第四步:编写业务层接口和实现类

2.3.1.5 第五步:编写 Dao 接口和实现类

2.3.1.6 第六步:在配置文件中配置业务层和持久层对

2.3.2 配置步骤

2.3.2.1 第一步:配置事务管理器

2.3.2.2 第二步:配置事务的通知引用事务管理

2.3.2.3 第三步:配置事务的属性

2.3.2.4 第四步:配置 AOP 切入点表达式

2.3.2.5 第五步:配置切入点表达式和事务通知的对应关系

2.4基于注解的配置方式

2.4.1 环境搭建

2.4.1.1 第一步:拷贝必备的 jar 包到工程的 lib 目录

2.4.1.2 第二步:创建 spring 的配置文件导入约束并配置扫描的包

2.4.1.3 第三步:创建数据库表和实体类

2.4.1.4 第四步:创建业务层接口和实现类并使用注解让 spring 管理

2.4.1.5 第五步:创建 Dao 接口和实现类并使用注解让 spring 管理

2.4.2 配置步骤

2.4.2.1 第一步:配置事务管理器并注入数据源

2.4.2.2 第二步:在业务层使用@Transactional 注解

2.4.2.3 第三步:在配置文件中开启 spring 对注解事务的支持

2.4.3 不使用 xml 的配置方式

第3章 Spring5 的新特性[了解]

3.1与 JDK 相关的升级

3.1.1 jdk 版本要求:

 3.1.2 利用 jdk8 版本更新的内容

3.2核心容器的更新

3.3JetBrains Kotlin 语言支持

3.4响应式编程风格

3.5Junit5 支持

3.6依赖类库的更新

 

Java spring boot使用spring jdbc连接多个数据库

Java spring boot使用spring jdbc连接多个数据库

application.properties里的配置如下,注意要使用jdbc-url,否则会出现jdbcUrl is required with driverClassName:

spring.datasource.primary.jdbc-url=jdbc:mysql://xxx1/xxx
spring.datasource.primary.username=xxx
spring.datasource.primary.password=xxx

spring.datasource.secondary.jdbc-url=jdbc:mysql://xxx.xxx.xxx.xxx:xxxx/xxx
spring.datasource.secondary.username = xxxx
spring.datasource.secondary.password = xxxx

DataSourceConfig,一般就找个config文件夹放着:

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.boot.jdbc.DataSourceBuilder;

@Configuration
public class DataSourceConfig {

    @Bean(name = "primaryDataSource")
    @Qualifier("primaryDataSource")
    @ConfigurationProperties(prefix="spring.datasource.primary")
    public DataSource primaryDataSource() {
            return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondaryDataSource")
    @Qualifier("secondaryDataSource")
    @Primary
    @ConfigurationProperties(prefix="spring.datasource.secondary")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();      
    }


    @Bean(name="primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate (@Qualifier("primaryDataSource")  DataSource dataSource ) {
        return new JdbcTemplate(dataSource);
    }

    @Bean(name="secondaryJdbcTemplate")
    public JdbcTemplate  secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

}

在dao层,也就是实际从数据库查询数据的那一层,这样使用,在Qualifier后写需要的连接配置:

@Autowired
@Qualifier("primaryJdbcTemplate")
public JdbcTemplate jdbcTemplate;

 

特别注意一不小心会报错 jdbcUrl is required with driverClassName 。

关于java – Spring事务不能正常运行JAX WS JDBCspring事务不起作用的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Ajax无法正常运行JSF 2.2、eclipse的debug突然模式不能正常运行,但非debug模式却能正常运行、java day60【 Spring 中的 JdbcTemplate[会用] 、Spring 中的事务控制 、Spring5 的新特性[了解] 】、Java spring boot使用spring jdbc连接多个数据库等相关内容,可以在本站寻找。

本文标签: