Explorar el Código

项目依赖升级,如spring、jackson等;

xuxueli hace 7 años
padre
commit
6042011dc7
Se han modificado 21 ficheros con 83 adiciones y 88 borrados
  1. 1 0
      doc/XXL-JOB官方文档.md
  2. 14 15
      pom.xml
  3. 33 37
      xxl-job-admin/pom.xml
  4. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
  5. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
  6. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
  7. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
  8. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java
  9. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
  10. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java
  11. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
  12. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/JobKeyUtil.java
  13. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
  14. 4 4
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
  15. 2 2
      xxl-job-admin/src/main/resources/spring/applicationcontext-base.xml
  16. 2 2
      xxl-job-admin/src/main/resources/spring/applicationcontext-xxl-job-admin.xml
  17. 3 3
      xxl-job-admin/src/main/resources/spring/springmvc-context.xml
  18. 1 1
      xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogDaoTest.java
  19. 4 4
      xxl-job-core/pom.xml
  20. 5 6
      xxl-job-core/src/main/java/com/xxl/job/core/util/JacksonUtil.java
  21. 2 2
      xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/applicationcontext-xxl-job.xml

+ 1 - 0
doc/XXL-JOB官方文档.md Ver fichero

@@ -1082,6 +1082,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
1082 1082
 - 17、告警邮件样式优化;邮件组件调整为commons-email简化邮件操作;
1083 1083
 - 18、任务列表界面,左侧菜单合并时样式错乱问题修复;
1084 1084
 - 19、执行器地址录入交互优化,地址长度扩展支持至512位,支持大规模执行器集群配置;
1085
+- 20、项目依赖升级,如spring、jackson等;
1085 1086
 
1086 1087
 
1087 1088
 ### TODO LIST

+ 14 - 15
pom.xml Ver fichero

@@ -20,32 +20,31 @@
20 20
 		<javax.servlet-api.version>3.0.1</javax.servlet-api.version>
21 21
 		<jsp-api.version>2.2</jsp-api.version>
22 22
 
23
-		<spring.version>3.2.18.RELEASE</spring.version>
24
-		<jackson-mapper-asl.version>1.9.13</jackson-mapper-asl.version>
25
-		<aspectjweaver.version>1.8.7</aspectjweaver.version>
23
+		<spring.version>4.3.13.RELEASE</spring.version>
24
+		<jackson.version>2.9.3</jackson.version>
25
+		<aspectjweaver.version>1.8.13</aspectjweaver.version>
26 26
 		<slf4j-api.version>1.7.25</slf4j-api.version>
27
-		<freemarker.version>2.3.20</freemarker.version>
28
-		<junit.version>4.11</junit.version>
27
+		<freemarker.version>2.3.23</freemarker.version>
28
+		<junit.version>4.12</junit.version>
29 29
 
30 30
 		<jetty-server.version>9.2.22.v20170606</jetty-server.version>
31
-		<hessian.version>4.0.38</hessian.version>
32
-		<httpclient.version>4.3.6</httpclient.version>
31
+		<hessian.version>4.0.51</hessian.version>
32
+		<httpclient.version>4.5.4</httpclient.version>
33 33
 
34 34
 		<commons-exec.version>1.3</commons-exec.version>
35
-		<commons-beanutils.version>1.9.2</commons-beanutils.version>
36
-		<commons-lang.version>2.6</commons-lang.version>
35
+		<commons-collections4.version>4.1</commons-collections4.version>
36
+		<commons-lang3.version>3.7</commons-lang3.version>
37 37
 		<commons-email.version>1.5</commons-email.version>
38 38
 
39 39
 		<c3p0.version>0.9.5.2</c3p0.version>
40
-		<mysql-connector-java.version>5.1.29</mysql-connector-java.version>
41
-		<mybatis-spring.version>1.2.2</mybatis-spring.version>
42
-		<mybatis.version>3.2.8</mybatis.version>
40
+		<mysql-connector-java.version>5.1.45</mysql-connector-java.version>
41
+		<mybatis-spring.version>1.3.1</mybatis-spring.version>
42
+		<mybatis.version>3.4.5</mybatis.version>
43 43
 
44
-		<groovy-all.version>2.4.5</groovy-all.version>
45
-		<mail.version>1.4.6</mail.version>
44
+		<groovy-all.version>2.4.13</groovy-all.version>
46 45
 		<quartz.version>2.3.0</quartz.version>
47 46
 
48
-		<spring-boot.version>1.5.6.RELEASE</spring-boot.version>
47
+		<spring-boot.version>1.5.9.RELEASE</spring-boot.version>
49 48
 	</properties>
50 49
 
51 50
 	<build>

+ 33 - 37
xxl-job-admin/pom.xml Ver fichero

@@ -40,18 +40,22 @@
40 40
 		</dependency>
41 41
 		<!-- jackson (support spring json) -->
42 42
 		<dependency>
43
-			<groupId>org.codehaus.jackson</groupId>
44
-			<artifactId>jackson-mapper-asl</artifactId>
45
-			<version>${jackson-mapper-asl.version}</version>
43
+			<groupId>com.fasterxml.jackson.core</groupId>
44
+			<artifactId>jackson-databind</artifactId>
45
+			<version>${jackson.version}</version>
46 46
 		</dependency>
47 47
 
48
-		<!-- slf4j -->
48
+		<!-- servlet -->
49 49
 		<dependency>
50
-			<groupId>org.slf4j</groupId>
51
-			<artifactId>slf4j-log4j12</artifactId>
52
-			<version>${slf4j-api.version}</version>
50
+			<groupId>javax.servlet</groupId>
51
+			<artifactId>javax.servlet-api</artifactId>
52
+			<version>${javax.servlet-api.version}</version>
53
+		</dependency>
54
+		<dependency>
55
+			<groupId>javax.servlet.jsp</groupId>
56
+			<artifactId>jsp-api</artifactId>
57
+			<version>${jsp-api.version}</version>
53 58
 		</dependency>
54
-
55 59
 		<!-- freemarker -->
56 60
 		<dependency>
57 61
 			<groupId>org.freemarker</groupId>
@@ -59,37 +63,37 @@
59 63
 			<version>${freemarker.version}</version>
60 64
 		</dependency>
61 65
 
62
-		<!-- commons-beanutils -->
66
+		<!-- slf4j -->
63 67
 		<dependency>
64
-			<groupId>commons-beanutils</groupId>
65
-			<artifactId>commons-beanutils</artifactId>
66
-			<version>${commons-beanutils.version}</version>
68
+			<groupId>org.slf4j</groupId>
69
+			<artifactId>slf4j-log4j12</artifactId>
70
+			<version>${slf4j-api.version}</version>
67 71
 		</dependency>
68
-		<!-- commons-lang -->
72
+		<!-- junit -->
69 73
 		<dependency>
70
-			<groupId>commons-lang</groupId>
71
-			<artifactId>commons-lang</artifactId>
72
-			<version>${commons-lang.version}</version>
74
+			<groupId>junit</groupId>
75
+			<artifactId>junit</artifactId>
76
+			<version>${junit.version}</version>
77
+			<scope>test</scope>
73 78
 		</dependency>
74 79
 
75
-		<!-- servlet -->
80
+		<!-- commons-collections4 -->
76 81
 		<dependency>
77
-			<groupId>javax.servlet</groupId>
78
-			<artifactId>javax.servlet-api</artifactId>
79
-			<version>${javax.servlet-api.version}</version>
82
+			<groupId>org.apache.commons</groupId>
83
+			<artifactId>commons-collections4</artifactId>
84
+			<version>${commons-collections4.version}</version>
80 85
 		</dependency>
86
+		<!-- commons-lang3 -->
81 87
 		<dependency>
82
-			<groupId>javax.servlet.jsp</groupId>
83
-			<artifactId>jsp-api</artifactId>
84
-			<version>${jsp-api.version}</version>
88
+			<groupId>org.apache.commons</groupId>
89
+			<artifactId>commons-lang3</artifactId>
90
+			<version>${commons-lang3.version}</version>
85 91
 		</dependency>
86
-
87
-		<!-- junit -->
92
+		<!-- commons-email -->
88 93
 		<dependency>
89
-			<groupId>junit</groupId>
90
-			<artifactId>junit</artifactId>
91
-			<version>${junit.version}</version>
92
-			<scope>test</scope>
94
+			<groupId>org.apache.commons</groupId>
95
+			<artifactId>commons-email</artifactId>
96
+			<version>${commons-email.version}</version>
93 97
 		</dependency>
94 98
 
95 99
 		<!-- c3p0 -->
@@ -116,7 +120,6 @@
116 120
 			<version>${mybatis.version}</version>
117 121
 		</dependency>
118 122
 
119
-
120 123
 		<!-- httpclient -->
121 124
 		<dependency>
122 125
 			<groupId>org.apache.httpcomponents</groupId>
@@ -124,13 +127,6 @@
124 127
 			<version>${httpclient.version}</version>
125 128
 		</dependency>
126 129
 
127
-		<!-- commons-email -->
128
-		<dependency>
129
-			<groupId>org.apache.commons</groupId>
130
-			<artifactId>commons-email</artifactId>
131
-			<version>${commons-email.version}</version>
132
-		</dependency>
133
-
134 130
 		<!-- quartz :quartz-2.2.3/c3p0-0.9.1.1/slf4j-api-1.6.6 -->
135 131
 		<dependency>
136 132
 			<groupId>org.quartz-scheduler</groupId>

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java Ver fichero

@@ -5,7 +5,7 @@ import com.xxl.job.admin.controller.interceptor.PermissionInterceptor;
5 5
 import com.xxl.job.admin.core.util.PropertiesUtil;
6 6
 import com.xxl.job.admin.service.XxlJobService;
7 7
 import com.xxl.job.core.biz.model.ReturnT;
8
-import org.apache.commons.lang.StringUtils;
8
+import org.apache.commons.lang3.StringUtils;
9 9
 import org.springframework.beans.propertyeditors.CustomDateEditor;
10 10
 import org.springframework.stereotype.Controller;
11 11
 import org.springframework.ui.Model;

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java Ver fichero

@@ -4,7 +4,7 @@ import com.xxl.job.admin.core.model.XxlJobGroup;
4 4
 import com.xxl.job.admin.dao.XxlJobGroupDao;
5 5
 import com.xxl.job.admin.dao.XxlJobInfoDao;
6 6
 import com.xxl.job.core.biz.model.ReturnT;
7
-import org.apache.commons.lang.StringUtils;
7
+import org.apache.commons.lang3.StringUtils;
8 8
 import org.springframework.stereotype.Controller;
9 9
 import org.springframework.ui.Model;
10 10
 import org.springframework.web.bind.annotation.RequestMapping;

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java Ver fichero

@@ -11,8 +11,8 @@ import com.xxl.job.core.biz.ExecutorBiz;
11 11
 import com.xxl.job.core.biz.model.LogResult;
12 12
 import com.xxl.job.core.biz.model.ReturnT;
13 13
 import com.xxl.job.core.rpc.netcom.NetComClientProxy;
14
-import org.apache.commons.lang.StringUtils;
15
-import org.apache.commons.lang.time.DateUtils;
14
+import org.apache.commons.lang3.StringUtils;
15
+import org.apache.commons.lang3.time.DateUtils;
16 16
 import org.slf4j.Logger;
17 17
 import org.slf4j.LoggerFactory;
18 18
 import org.springframework.stereotype.Controller;

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java Ver fichero

@@ -6,7 +6,7 @@ import javax.servlet.http.Cookie;
6 6
 import javax.servlet.http.HttpServletRequest;
7 7
 import javax.servlet.http.HttpServletResponse;
8 8
 
9
-import org.apache.commons.lang.ArrayUtils;
9
+import org.apache.commons.lang3.ArrayUtils;
10 10
 import org.springframework.web.servlet.ModelAndView;
11 11
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
12 12
 

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java Ver fichero

@@ -1,6 +1,6 @@
1 1
 package com.xxl.job.admin.core.model;
2 2
 
3
-import org.apache.commons.lang.StringUtils;
3
+import org.apache.commons.lang3.StringUtils;
4 4
 
5 5
 import java.util.ArrayList;
6 6
 import java.util.Arrays;

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java Ver fichero

@@ -8,7 +8,7 @@ import com.xxl.job.admin.core.util.JobKeyUtil;
8 8
 import com.xxl.job.admin.core.util.MailUtil;
9 9
 import com.xxl.job.core.biz.model.ReturnT;
10 10
 import com.xxl.job.core.handler.IJobHandler;
11
-import org.apache.commons.collections.CollectionUtils;
11
+import org.apache.commons.collections4.CollectionUtils;
12 12
 import org.slf4j.Logger;
13 13
 import org.slf4j.LoggerFactory;
14 14
 

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java Ver fichero

@@ -4,8 +4,8 @@ import com.xxl.job.admin.core.model.XxlJobGroup;
4 4
 import com.xxl.job.admin.core.model.XxlJobRegistry;
5 5
 import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
6 6
 import com.xxl.job.core.enums.RegistryConfig;
7
-import org.apache.commons.collections.CollectionUtils;
8
-import org.apache.commons.lang.StringUtils;
7
+import org.apache.commons.collections4.CollectionUtils;
8
+import org.apache.commons.lang3.StringUtils;
9 9
 import org.slf4j.Logger;
10 10
 import org.slf4j.LoggerFactory;
11 11
 

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java Ver fichero

@@ -12,7 +12,7 @@ import com.xxl.job.core.biz.model.ReturnT;
12 12
 import com.xxl.job.core.biz.model.TriggerParam;
13 13
 import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
14 14
 import com.xxl.job.core.util.IpUtil;
15
-import org.apache.commons.collections.CollectionUtils;
15
+import org.apache.commons.collections4.CollectionUtils;
16 16
 import org.slf4j.Logger;
17 17
 import org.slf4j.LoggerFactory;
18 18
 

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/JobKeyUtil.java Ver fichero

@@ -1,7 +1,7 @@
1 1
 package com.xxl.job.admin.core.util;
2 2
 
3 3
 import com.xxl.job.admin.core.model.XxlJobInfo;
4
-import org.apache.commons.lang.StringUtils;
4
+import org.apache.commons.lang3.StringUtils;
5 5
 
6 6
 /**
7 7
  * job key util

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java Ver fichero

@@ -15,7 +15,7 @@ import com.xxl.job.core.biz.model.HandleCallbackParam;
15 15
 import com.xxl.job.core.biz.model.RegistryParam;
16 16
 import com.xxl.job.core.biz.model.ReturnT;
17 17
 import com.xxl.job.core.handler.IJobHandler;
18
-import org.apache.commons.lang.StringUtils;
18
+import org.apache.commons.lang3.StringUtils;
19 19
 import org.quartz.SchedulerException;
20 20
 import org.slf4j.Logger;
21 21
 import org.slf4j.LoggerFactory;

+ 4 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java Ver fichero

@@ -14,10 +14,10 @@ import com.xxl.job.admin.service.XxlJobService;
14 14
 import com.xxl.job.core.biz.model.ReturnT;
15 15
 import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
16 16
 import com.xxl.job.core.glue.GlueTypeEnum;
17
-import org.apache.commons.collections.CollectionUtils;
18
-import org.apache.commons.lang.StringUtils;
19
-import org.apache.commons.lang.time.DateUtils;
20
-import org.apache.commons.lang.time.FastDateFormat;
17
+import org.apache.commons.collections4.CollectionUtils;
18
+import org.apache.commons.lang3.StringUtils;
19
+import org.apache.commons.lang3.time.DateUtils;
20
+import org.apache.commons.lang3.time.FastDateFormat;
21 21
 import org.quartz.CronExpression;
22 22
 import org.quartz.SchedulerException;
23 23
 import org.slf4j.Logger;

+ 2 - 2
xxl-job-admin/src/main/resources/spring/applicationcontext-base.xml Ver fichero

@@ -3,9 +3,9 @@
3 3
 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 4
 	   xmlns:context="http://www.springframework.org/schema/context"
5 5
 	   xsi:schemaLocation="http://www.springframework.org/schema/beans
6
-           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
6
+           http://www.springframework.org/schema/beans/spring-beans.xsd
7 7
            http://www.springframework.org/schema/context
8
-           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
8
+           http://www.springframework.org/schema/context/spring-context.xsd">
9 9
 
10 10
 	<context:component-scan base-package="com.xxl.job.admin.service, com.xxl.job.admin.dao" />
11 11
 

+ 2 - 2
xxl-job-admin/src/main/resources/spring/applicationcontext-xxl-job-admin.xml Ver fichero

@@ -3,9 +3,9 @@
3 3
 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 4
 	   xmlns:tx="http://www.springframework.org/schema/tx"
5 5
 	   xsi:schemaLocation="http://www.springframework.org/schema/beans
6
-		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
6
+		http://www.springframework.org/schema/beans/spring-beans.xsd
7 7
 		http://www.springframework.org/schema/tx 
8
-		http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
8
+		http://www.springframework.org/schema/tx/spring-tx.xsd">
9 9
 	
10 10
 	
11 11
 	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

+ 3 - 3
xxl-job-admin/src/main/resources/spring/springmvc-context.xml Ver fichero

@@ -4,11 +4,11 @@
4 4
 	   xmlns:mvc="http://www.springframework.org/schema/mvc"
5 5
 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 6
 	   xsi:schemaLocation="http://www.springframework.org/schema/beans
7
-		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
7
+		http://www.springframework.org/schema/beans/spring-beans.xsd
8 8
 		http://www.springframework.org/schema/context 
9
-		http://www.springframework.org/schema/context/spring-context-3.0.xsd
9
+		http://www.springframework.org/schema/context/spring-context.xsd
10 10
 		http://www.springframework.org/schema/mvc
11
-		http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
11
+		http://www.springframework.org/schema/mvc/spring-mvc.xsd">
12 12
 
13 13
 	<mvc:annotation-driven />
14 14
 	<context:component-scan base-package="com.xxl.job.admin.controller" />

+ 1 - 1
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogDaoTest.java Ver fichero

@@ -2,7 +2,7 @@ package com.xxl.job.dao.impl;
2 2
 
3 3
 import com.xxl.job.admin.core.model.XxlJobLog;
4 4
 import com.xxl.job.admin.dao.XxlJobLogDao;
5
-import org.apache.commons.lang.time.DateUtils;
5
+import org.apache.commons.lang3.time.DateUtils;
6 6
 import org.junit.Test;
7 7
 import org.junit.runner.RunWith;
8 8
 import org.springframework.test.context.ContextConfiguration;

+ 4 - 4
xxl-job-core/pom.xml Ver fichero

@@ -49,11 +49,11 @@
49 49
 
50 50
 		<!-- jackson -->
51 51
 		<dependency>
52
-			<groupId>org.codehaus.jackson</groupId>
53
-			<artifactId>jackson-mapper-asl</artifactId>
54
-			<version>${jackson-mapper-asl.version}</version>
52
+			<groupId>com.fasterxml.jackson.core</groupId>
53
+			<artifactId>jackson-databind</artifactId>
54
+			<version>${jackson.version}</version>
55 55
 		</dependency>
56
-		
56
+
57 57
 		<!-- httpclient -->
58 58
 		<dependency>
59 59
 			<groupId>org.apache.httpcomponents</groupId>

+ 5 - 6
xxl-job-core/src/main/java/com/xxl/job/core/util/JacksonUtil.java Ver fichero

@@ -1,11 +1,10 @@
1 1
 package com.xxl.job.core.util;
2 2
 
3
-
4
-import org.codehaus.jackson.JsonGenerationException;
5
-import org.codehaus.jackson.JsonParseException;
6
-import org.codehaus.jackson.map.JsonMappingException;
7
-import org.codehaus.jackson.map.ObjectMapper;
8
-import org.codehaus.jackson.type.TypeReference;
3
+import com.fasterxml.jackson.core.JsonGenerationException;
4
+import com.fasterxml.jackson.core.JsonParseException;
5
+import com.fasterxml.jackson.core.type.TypeReference;
6
+import com.fasterxml.jackson.databind.JsonMappingException;
7
+import com.fasterxml.jackson.databind.ObjectMapper;
9 8
 import org.slf4j.Logger;
10 9
 import org.slf4j.LoggerFactory;
11 10
 

+ 2 - 2
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/applicationcontext-xxl-job.xml Ver fichero

@@ -3,9 +3,9 @@
3 3
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 4
        xmlns:context="http://www.springframework.org/schema/context"
5 5
        xsi:schemaLocation="http://www.springframework.org/schema/beans
6
-           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
6
+           http://www.springframework.org/schema/beans/spring-beans.xsd
7 7
            http://www.springframework.org/schema/context
8
-           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
8
+           http://www.springframework.org/schema/context/spring-context.xsd">
9 9
 
10 10
 	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
11 11
 		<property name="fileEncoding" value="utf-8" />