我正在尝试找到一个网络服务,这将允许我获得特定Lat/Long的县名(而不是国家/地区).我将在服务器应用程序(可能是Java应用程序)中执行查找.如果我想有一些库,它没有一个web服务,但我想要最新的信息.我已经看了很多支持这个的API,但到目前为止我还没找到一个有效的API.我尝试过像这样的Yahoo API:
http://where.yahooapis.com/geocode?q=39.76144296429947,%20-104.8011589050293
但它没有填充地址信息.我试过一些"旗帜"选项也无济于事.
我也浏览了Googles API,但我读过很多他们没有填充县的地方.
那么有没有人知道任何带Lat/Long并返回与该位置相关联的县的API?如果你有任何例子,这将是伟大的.
我还想知道哪些API允许在商业应用程序中使用.我发现的很多数据都说你不能用数据来赚钱.我可能正在阅读那些错误,但我正在寻找建立一个我可能会收取使用这些数据的服务.所以我需要选择.也许是免费服务,而我正在探索各种选择,并在未来支付服务.
有没有办法在Spring Boot应用程序中HystrixCommand使用@HystrixCommand注释时失败的原因?看起来如果您实现自己的HystrixCommand,您可以访问getFailedExecutionException但是如何在使用注释时访问它?我希望能够根据发生的异常类型在回退方法中执行不同的操作.这可能吗?
我看到一个音符有关HystrixRequestContext.initializeContext(),但HystrixRequestContext不给你访问什么,有没有使用上下文来获取访问例外不同的方式?
我正在尝试使用Jackson json解析器(v2.5.2)来解析一个不是真正的json的自定义json文档,我无法弄清楚如何使它工作.我有一个json文档可能看起来像:
{
"test": {
"one":"oneThing",
"two": nonStandardThing(),
"three": true
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用ObjectMapper将其映射到a java.util.Map,我只想nonStandardThing()在我的地图中为键添加为String值two.
当我通过它运行时,ObjectMapper.readValue(json, Map.class)我得到了异常:
com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'nonStandardThing': was expecting 'null', 'true', 'false' or NaN
at [Source: { "test":{"test1":nonStandardThing(),"test2":"two"}}; line: 1, column: 35]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1487)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:518)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._reportInvalidToken(ReaderBasedJsonParser.java:2300)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._reportInvalidToken(ReaderBasedJsonParser.java:2277)
Run Code Online (Sandbox Code Playgroud)
我曾尝试注册a DeserializationProblemHandler,ObjectMapper但在发生此问题时从未调用过.
这是一个示例应用程序,显示了我尝试过的内容:
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.DeserializationProblemHandler;
import java.io.IOException;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JacksonDeserializerTest { …Run Code Online (Sandbox Code Playgroud) 有没有办法只返回mongodb投影中的属性值?例如,我有一个文件,其属性值为数组.我希望查询中的返回对象只是数组,而不是property: [ .. ].例:
文献:
db.test.insert({ name: "Andrew",
attributes: [ { title: "Happy"},
{ title: "Sad" }
]
});
Run Code Online (Sandbox Code Playgroud)
查询:
db.test.find({name: "Andrew"},{attributes:1, "_id":0});
Run Code Online (Sandbox Code Playgroud)
返回:
{ "attributes" : [ { "title" : "Happy" }, { "title" : "Sad" } ] }
Run Code Online (Sandbox Code Playgroud)
我希望它返回数组:
[ { title: "Happy"},
{ title: "Sad" }
]
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?谢谢
我们的主要问题是:我们有两个常春藤存储库,我们希望它们是彼此的镜像.因此,只要我们发布工件,我们就希望工件转到两个存储库.我们以前只有一个存储库,因此我们有许多已经发布到该存储库的现有项目.我们不想进入那么多项目并添加第二个发布目标,所以我们试图看看我们是否可以通过常春藤设置来实现这一目标.
所以我试图找出是否有可能同时将Ivy发布工件发送到多个存储库.我最好的猜测是使用链式解析器发布到,但常春藤似乎只选择链中的第一个解析器然后停止.那么有没有人知道如何在不调用发布两次的情况下完成此任务?
我正在尝试使用Spring Cloud的Zuul,Eureka和我自己的服务来实现微服务架构.我有多个具有UI和服务的服务,每个服务都可以使用x509安全性对用户进行身份验证.现在我正试图将Zuul放在这些服务面前.由于Zuul无法将客户端证书转发到后端,我认为下一个最好的方法是在Zuul的前门验证用户身份,然后使用Spring Session在后端服务中复制其身份验证状态.我已经按照Dave Syer 的教程进行了操作,它几乎可以工作,但不是第一次请求.这是我的基本设置:
如果清除所有会话并重新开始并尝试命中代理,则它会使用zuul服务器的证书将请求发送到后端.然后,后端服务根据该用户证书查找用户,并认为用户是服务器,而不是在Zuul代理中经过身份验证的用户.如果您只是刷新页面,那么您突然成为后端的正确用户(在Zuul代理中进行身份验证的用户).我正在检查的方法是在后端控制器中打印出Principal用户.所以在第一次请求时,我看到了服务器用户,在第二次请求时,我看到了真实用户.如果我在后端禁用x509,在第一次请求时,我得到403,然后刷新,它让我进去.
看起来会话没有足够快地复制到后端,所以当用户在前端进行身份验证时,它在Zuul转发请求时没有进入后端.
有没有办法保证会话在第一个请求(即会话创建)上被复制?或者我错过了一步以确保其正常工作?
以下是一些重要的代码段:
Zuul代理:
@SpringBootApplication
@Controller
@EnableAutoConfiguration
@EnableZuulProxy
@EnableRedisHttpSession
public class ZuulEdgeServer {
public static void main(String[] args) {
new SpringApplicationBuilder(ZuulEdgeServer.class).web(true).run(args);
}
}
Run Code Online (Sandbox Code Playgroud)
Zuul配置:
info:
component: Zuul Server
endpoints:
restart:
enabled: true
shutdown:
enabled: true
health:
sensitive: false
zuul:
routes:
service1: /**
logging:
level:
ROOT: INFO
# org.springframework.web: DEBUG
net.acesinc: DEBUG
security.sessions: ALWAYS
server:
port: 8443
ssl:
key-store: classpath:dev/localhost.jks
key-store-password: thepassword
keyStoreType: JKS
keyAlias: localhost
clientAuth: want …Run Code Online (Sandbox Code Playgroud) 我有一个Location对象,当它们被持久化为mongodb时我需要强制它们的顺序,但我没有太多的运气搞清楚如何去做.Location类看起来像:
Location {
float lat;
float lon;
County county;
}
Run Code Online (Sandbox Code Playgroud)
当它被持续到mongo时,县总是在拉特和勒恩之前.这是一个问题,因为我试图在其上放置一个geoindex,前两个属性必须是lat/long.
我试过了:
@XmlRootElement(name="location")
@XmlType(propOrder={"latitude", "longitude", "county"})
Location {
float lat;
float lon;
County county;
}
Run Code Online (Sandbox Code Playgroud)
当location对象被序列化为xml到我的客户端,而不是DB.似乎spring数据或某些mongo mapper总是按字母顺序执行操作.
有谁知道如何强制订单属性持久存入mongo?谢谢!
我遇到的是一个非常简单的问题,我只是想念一些东西,所以希望有人能指出我要去哪里。我正在尝试使用$ setIsSubset操作引用一个包含项列表的子属性,但它告诉我它为null。基本上查询是错误的,但我不明白为什么。这是Mongo shell的输出:
$ mongo setTest
MongoDB shell version: 2.6.3
connecting to: setTest
> db.items.insert({"credentials":{"authorities":["AUTH1"]}});
WriteResult({ "nInserted" : 1 })
> db.items.find();
{ "_id" : ObjectId("53acd0e214c4ee1272550de4"), "credentials" : { "authorities" : [ "AUTH1" ] } }
> var userAuthorities = ["AUTH1","AUTH2","AUTH3"];
> db.items.aggregate([
... { $redact:
... {
... $cond:
... {
... if: { $setIsSubset: ["$credentials.authorities", userAuthorities ] },
... then: "$$DESCEND",
... else: "$$PRUNE"
... }
... }
... }
... ]);
assert: command failed: {
"errmsg" : …Run Code Online (Sandbox Code Playgroud) mongodb ×3
spring ×3
java ×2
spring-cloud ×2
ant ×1
data-binding ×1
geocoding ×1
geolocation ×1
hystrix ×1
ivy ×1
jackson ×1
json ×1
spring-data ×1