我已经将服务部署到kubernetes集群中,如下所示:
$ kubectl get svc my-service
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
my-service 192.168.202.23 <none> 8080/TCP name=my-service 38d
Run Code Online (Sandbox Code Playgroud)
YAML配置的spec部分如下所示:
"spec": {
"ports": [
{
"name": "http-port",
"protocol": "TCP",
"port": 8080,
"targetPort": 8080
}
],
"selector": {
"name": "my-service"
},
"clusterIP": "192.168.202.23",
"type": "ClusterIP",
"sessionAffinity": "None"
},
"status": {
"loadBalancer": {}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我想公开使用LoadBalancer可以从外部访问此服务。使用kubectl暴露服务会产生如下错误:
$ kubectl expose service my-service --type="LoadBalancer"
Error from server: services "my-service" already exists
Run Code Online (Sandbox Code Playgroud)
是否无法“编辑”现有已部署的服务并使之可从外部访问?
我们使用Jackson 1.9.1对JSON请求响应字符串进行序列化和反序列化.原始Java类型,集合类型和自定义对象(序列化)没有问题.但是,我在尝试将JSON字符串反序列化为java枚举时遇到问题.JSON字符串是这样序列化的:
"wt":{"wt":100.5,"unit":{"LBS":3}}
Run Code Online (Sandbox Code Playgroud)
wt的Java类型是这样的:
public class Weight {
protected double weight;
protected Unit unit;
}
Run Code Online (Sandbox Code Playgroud)
我提到了这个,这个,以及这个在SO上,并提出了重量单位的枚举,如下:
public enum Unit {
KG("kg"),
GM("gm"),
LBS("lbs"),
OZ("oz");
private String value;
private WeightMeasurementUnit(String value) { this.value = value; }
@JsonValue
public String getValue() { return this.value; }
@JsonCreator
public static Unit create(String val) {
Unit[] units = Unit.values();
for (Unit unit : units) {
if (unit.getValue().equals(val)) {
return unit;
}
}
return LBS;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试反序列化上面提到的JSON时,我得到这个错误说:"无法识别的字段"LBS"(类abcdWeight),没有标记为可忽略"异常堆栈跟踪是这样的:
Caused by: …Run Code Online (Sandbox Code Playgroud) 我有一个简单的弹簧批处理作业 - 逐行读取文件,对输入字符串执行某些操作,并写入一些输出.输出文件包含输入的每一行加上该行的某些处理状态(成功/失败.)从以下位置读取文件:<dir>/<inputFolder>/<inputFileName>并将处理后的输出写入<dir>/<outputFolder>/<inputFileName>所有这些值,因为jobParameters
File Reader是这样传递的:
<bean id="itemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
<property name="resource" value="file:#{jobParameters['cwd']}/#{jobParameters['inputFolder']}/#{jobParameters['inputFile']}" />
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="delimiter" value="," />
</bean>
</property>
<property name="fieldSetMapper" >
<bean class="org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper" />
</property>
</bean>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
项目编写器是这样的:
<bean id="itemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step" >
<property name="resource" value="#{jobParameters['cwd']}/#{jobParameters['outputFolder']}/#{jobParameters['inputFile']}" />
<property name="lineAggregator">
<bean class="org.springframework.batch.item.file.transform.PassThroughLineAggregator" />
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
当我运行这个批处理作业时,读者正确读取文件,处理器完成其工作但itemWriter抛出了FileNotFound异常
2014/06/27 18-02-31,168:OUT:ERROR[Encountered an error executing the step]
org.springframework.batch.item.ItemStreamException: Could not convert resource to file: [class path resource [S:/temp/seller-optin-batch/output/sellersToOptin_test.txt]]
at org.springframework.batch.item.file.FlatFileItemWriter.getOutputState(FlatFileItemWriter.java:374) …Run Code Online (Sandbox Code Playgroud)