站长资源服务器
maven项目远程部署&&使用tomcat配置数据库连接的方法
一.使用tomcat远程部署
1.1遇到的问题:
项目中需要引用第三方jar包,在使用mvn打包项目的时候,会报错'dependencies.dependency.systemPath'for com.dingtalk.api:taobao-sdk-java:jar must be omitted.
问题的原因在于mvn在打包项目的时候,先加载pom.xml,如果本地仓库没有的依赖就会报错。
解决办法:将第三方jar包安装到本地仓库使用命令:Mvn install:install-file -Dfile=E:\taobao-sdk-java-auto_1479188381469-20200422.jar -DgroupId=taobao-sdk-java -DartifactId=taobao-sdk-java -Dversion=2.0 -Dpackaging=jar在pom依赖中加入war,把项目打成war包,否则会默认是jar包,部署不上去。在tomcat config目录下配置tomcat-users.xml后,重启tomcat不行的话,要重启tomcat服务。如果能够成功访问到http://localhost:8080/manager/html,则证明配置成功找错误要可以通过tomcat日志信息快速定位错误的原因,提高解决问题的效率5. 之前一致尝试不成功的原因是因为这个项目是复制之后的项目,idea中的terminal命令行所在的路径还是之前项目的路径,之前项目中的pom没有配置插件,所以导致连接不上。
1.2远程部署的配置
(1)加入插件:
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <username>admin</username> <password>123456</password> <url>http://47.102.123.186:8095/manager/text</url> <server>tomcatServer</server> //要与server中的id保持一致 <update>true</update> <path>/zw</path>//项目名 </configuration> </plugin>
(2)配置tomcat目录下tomcat-users.xml配置文件:
<role rolename="admin-gui"/> <role rolename="manager-gui"/> // 允许访问html接口(即URL路径为/manager/html/*)<role rolename="manager-script"/>// 允许访问纯文本接口(即URL路径为/manager/text/*) <user username="admin" password="123456" roles="admin-gui,manager-gui,manager-script"/> //注意!可以给该用户添加多个角色,为了远程部署,至少需要这个角色:manager-script,也可以开启manager-gui用于可视化管理
(3)配置maven 的setting.xml文件在servers标签下配置:
<server> <id>tomcatServer</id> <username>admin</username> <password>123456</password> </server>
(4)使用命令:mvn tomcat7:deploy
二.使用tomcat的配置文件配置数据库连接配置的具体步骤
需要配置tomcat 的conf目录下的server.xml,context.xml,web.xml。
具体的配置如下:Server.xml的GlobalNamingResources标签下配置:
`<Resource name="jdbc/DataSource" auth="Container" type="javax.sql.DataSource" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.0.1;databaseName=xydi" username="sa" password="sa" maxActive="20" //最大连接数 maxIdle="10" maxWait="-1"/>`//最长的等待时间
Context.xml下配置:
<ResourceLink name="jdbc/DataSource" global="jdbc/DataSource" type="javax.sql.DataSource"/>// 引入server.xml的配置信息
Web.xml下配置:
<resource-ref> <res-ref-name>jdbc/DataSource</res-ref-name>//与resource的name保持一致 <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>`
如果使用的spring框架:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/DataSource"/> <property name="expectedType" value="javax.sql.DataSource"/> </bean>
没有使用spring框架:
Connection con = null; Context c = new InitialContext(); DataSource ds = (DataSource) c.lookup("java:/comp/env/jdbc/DataSource");//项目名要与context.xml里面的对应 con = ds.getConnection();
总结