我有一个基于Spring Framework的应用程序,我们之前已成功部署并添加了新功能.我们的开发机器是JDK6和Tomcat7.我们使用的是Spring 3.1.0.M2.旧代码使用Apache CXF 2.4.1提供Web服务并部署到我们的测试服务器上,即Tomcat 5.0和JDK5.
作为新功能的一部分,我使用此Spring Web服务客户端定义来访问外部服务
<bean id="urlWebService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean">
<property name="serviceInterface" value="au.com.company.app.client.urlservice.UrlWebService" />
<property name="wsdlDocumentUrl" value="http://dev.urlservice-int.services.company.com.au/v1_0/shortener?wsdl" />
<property name="namespaceUri" value="http://urlservice.services.company.com.au/shortener" />
<property name="serviceName" value="GenerateShortenedUrlWebServiceImplService" />
<property name="portName" value="generateShortenedUrlWebServicePort" />
</bean>
Run Code Online (Sandbox Code Playgroud)
但是现在当我尝试部署到测试服务器上时,我得到:
Caused by: java.lang.AbstractMethodError: org.apache.xerces.dom.ElementNSImpl.setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)Ljava/lang/Object;
at org.apache.cxf.staxutils.StaxUtils.addLocation(StaxUtils.java:1083)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:971)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:947)
at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:874)
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:226)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:186)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:203)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:90)
at javax.xml.ws.Service.<init>(Service.java:56)
at javax.xml.ws.Service.create(Service.java:697)
at org.springframework.remoting.jaxws.LocalJaxWsServiceFactory.createJaxWsService(LocalJaxWsServiceFactory.java:125)
at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.prepare(JaxWsPortClientInterceptor.java:334)
at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.afterPropertiesSet(JaxWsPortClientInterceptor.java:316)
at org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean.afterPropertiesSet(JaxWsPortProxyFactoryBean.java:42)
Run Code Online (Sandbox Code Playgroud)
我已经在这两天了,并尝试了我可以谷歌和想到的一切.Tomcat 5.0似乎已在其内存目录中安装了旧版本的Xerces,并且CXF似乎正在尝试使用.
现实是我不希望CXF涉及这个春天的客户端代码.它只是因为我无法删除的遗留代码.我无法想办法让CXF忽略这个客户端.我无法升级服务器和JDK,或删除旧的Xerces.我试图包含更高版本的Xerces以及各种其他XML API,希望CXF能够开始使用其中一个而不是Xerces,我尝试过任何可以找到的配置类型更改.但到目前为止没有任何作用
有没有人知道如何(a)阻止CXF将它挂钩到这个bean?或者(b)告诉CXF至少不要使用过时的Xerces?
当我尝试运行单元测试时,我遇到了在Objective-C项目中弹出的这个可怕问题.我已经尝试了以下所有内容(根据各种SOF帖子):
我检查了控制台日志,发现了这个:
26/06/2016 9:20:10.973 PM com.apple.debugserver-@(#)PROGRAM:debugserver PROJECT:debugserver-350.0.21.9
[7768]: 1 +0.000000 sec [1e58/1003]: error: ::read ( 3, 0x700000080a40, 1024 ) => -1 err = Bad file descriptor (0x00000009)
Run Code Online (Sandbox Code Playgroud)
我不是在使用Cocoapods.
任何人有什么想法接下来要尝试什么?
我一直试图让Firebase与Auth,Google登录和Facebook登录一起工作,每当我尝试在模拟器中运行它时,我都会收到此错误:
控制台或模拟器日志中没有记录任何内容,但是当我查看系统控制台时,我发现似乎是问题所在:
0x70000b260000 - [MIBundle _validateWithError:]:38:无法从路径/ Users/derekclarkson/Library/Developer/CoreSimulator/Devices/FF1AC158-D8C6-411E-8912-146C355DC97B/data/Library/Caches/com中的bundle加载Info.plist .apple.mobile.installd.staging/temp.SFHCp0 /提取/ Crux.app /框架/ GTMSessionFetcher.framework
我如何解决它?
我正在处理结合代码和 Swift UI 并遇到了这个问题。实际上,我想将 a 传递给PublisheraView并在View每次发布者发布更新时进行更新。
这是一个无法编译的示例操场。相反,它提出了一个错误 -Escaping closure captures mutating 'self' parameter就.sink(...行了。
import Combine
import SwiftUI
struct MyView: View {
let cancellable: AnyCancellable
@State var current: Int = 0
init<P>(publisher: P) where P: Publisher, P.Output == Int, P.Failure == Never {
cancellable = publisher.sink { value in
self.current = value
}
}
var body: some View {
Text("\(current)")
}
}
let subject = PassthroughSubject<Int, Never>()
let x = MyView(publisher: …Run Code Online (Sandbox Code Playgroud) 我有一个带有web方法的控制器,如下所示:
public Response registerDevice(
@Valid final Device device,
@RequestBody final Tokens tokens
) {...}
Run Code Online (Sandbox Code Playgroud)
一个看起来像这样的验证器:
public class DeviceValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return Device.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
// Do magic
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图让Spring验证由拦截器生成的Device参数.但每次我尝试时,它都会验证令牌参数.
我已经尝试使用@InitBinder指定验证器,@Validated而不是@Valid注册MethodValidationPostProcessor类.到目前为止没有运气.
根本不调用验证器,或者在验证Device参数时验证tokens参数.
我正在使用Spring 4.1.6和Hibernate验证器5.1.3.
谁能提供任何关于我做错的线索?我整个下午都在网上试图解决这个问题.不敢相信春天的验证区域仍然像5年前一样混乱:-(
我在测试中遇到了一些失败,我发现它们似乎是由 XCTest 期望等待挂起实例引起的Task。即使它们位于后台线程上。
这是一个虚构的测试,它是我的应用程序中代码的极大简化版本(请原谅打印,这只是我在尝试查看排序):
func testTask() async throws {
let exp = expectation(description: "")
print("Queuing")
Task.detached(priority: .background) {
let duration = try await ContinuousClock().measure {
print(" Initialing task sleep")
try await Task.sleep(for:.seconds(1))
}
print(" Fulfilling after \(duration)")
exp.fulfill()
}
print("Waiting")
wait(for: [exp], timeout: 4.0)
print("Finished")
}
Run Code Online (Sandbox Code Playgroud)
现在,当我运行此测试时,任务在后台线程上执行并按预期挂起,但它会挂起至少 4 秒,直到预期超时后才会完成。
到目前为止我读到的所有内容都表明您应该能够将期望与任务一起使用,但到目前为止它对我来说还不起作用。
我是否遗漏了一些东西,或者我是否必须编写一些等待代码来表现得像期望一样?
注意:此测试是我的应用程序中情况的极大简化版本。因此,虽然它作为独立测试可能没有意义,但它准确地代表了我正在测试的内容。其中还有传统完成的概念,因为实际代码会触发后台任务,然后通知其他代码何时完成。