我已经修改了内部错误和错误处理来处理FaultExceptions而不是SoapExceptions.
该项目有一套广泛的测试用例来测试仍然依赖于SoapException的错误和错误处理.出于各种原因,我宁愿不重写它们.
是否可以将SoapException转换为FaultException,从而针对新的错误处理代码运行旧的测试用例?
我的Spring 3.x项目中有许多带有各种请求处理程序的控制器(所有基于注释的,使用@Controller和@RequestMapping).
目前,应用程序上下文只定义DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapterbean.如果我理解正确,这些也可以替换为<mvc:annotation-driven/>.
现有的控制器主要填充通过参数传入的模型,然后将视图名称作为字符串返回.映射由标准DefaultRequestToViewNameTranslator和InternalResourceViewResolverbean完成.
现在我想介绍一个新的控制器,它需要一个HttpMessageConverter(它将是一个MappingJacksonHttpMessageConverter)和一个HandlerExceptionResolver特定的控制器.
不应以任何方式影响现有控制器.它们的请求和响应都不应由消息转换器转换,异常解析器也不应处理任何异常.
有没有办法在不删除新控制器的基于注释的配置的情况下执行此操作?有没有办法专门为一个控制器设置消息转换器和异常解析器,而不放弃基于的URL路由@RequestMapping?
或者有没有办法在控制器上使用注释选择转换器/解析器配置?
如果没有,那么下一个最佳方法是什么?
我们正在使用Axis 1.x进行Web服务项目,并且我在使Maven构建工作时遇到了问题.
我做了
mvn clean generate-sources
Run Code Online (Sandbox Code Playgroud)
这触发了axistools-maven-plugin的wsdl2java目标.它最终会中止
[INFO] [axistools:wsdl2java {execution: generate-project}]
[INFO] about to add compile source root
[INFO] Processing wsdl: C:\Project\src\main\webapp\WEB-INF\wsdl\project.wsdl
Jan 24, 2011 11:24:58 AM org.apache.axis.utils.JavaUtils isAttachmentSupported
WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error generating Java code from WSDL.
Embedded error: Error running Axis
C:\Project\src\main\webapp\WEB-INF\project.xsd (The system cannot find the file specified)
Run Code Online (Sandbox Code Playgroud)
这是对的.该文件不存在.(并且-e不会产生额外的有用信息 - 这是一个LifecycleExecutionException,由MojoExecutionException引起,由AxisPluginException引起,由FileNotFoundException引起.)
关键是,它不应该搜索WEB-INF\project.xsd,它应该访问WEB-INF\wsdl\project.xsd.
这是WSDL所说的: …
在内部可重用库的通用C#类中,我想传递一个引用"映射到其他东西列表的东西".那里传递的内容的数据类型不应该被库知道.此外,它们的存储方式也不应该是已知的,即今天的内存中保存的列表,以后可能是从按需读取的数据库表.
所以我以为我会写这个库类:
class GenericClass<T, U>
{
public void Foo(IDictionary<T, IEnumerable<U>> bar)
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
这会编译,但尝试传递具体实现不会:
class UsingClass
{
public static void Main(string[] args)
{
var c = new GenericClass<string, string>();
c.Foo(new Dictionary<string, List<string>>());
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下两个语法错误:
Filename.cs(46,13): error CS1502: The best overloaded method match for 'GenericClass<string,string>.Foo(System.Collections.Generic.IDictionary<string,System.Collections.Generic.IEnumerable<string>>)' has some invalid arguments
Filename.cs(46,19): error CS1503: Argument 1: cannot convert from 'System.Collections.Generic.Dictionary<string,System.Collections.Generic.List<string>>' to 'System.Collections.Generic.IDictionary<string,System.Collections.Generic.IEnumerable<string>>'
Run Code Online (Sandbox Code Playgroud)
替换IEnumerable声明Foo()并List修复它,但这当然不是我想要的.
这真的不是C#(4.0)支持的,还是我错过了一些明显的东西?你会建议什么解决方法?(我确信之前已经讨论了很多,所以链接到很好的描述也很好.)
是的,我应该能够为此编写自己的帮助程序类,但为什么我必须这样做?
我如何比较两个通用集合?这是我尝试使用两个字符串数组,但它不会返回true.
namespace genericCollections
{
class Program
{
static void Main(string[] args)
{
string[] xx = new string[] { "gfdg", "gfgfd", "fgfgfd" };
string[] yy = new string[] { "gfdg", "gfgfd", "fgfgfd" };
Console.WriteLine(ComparerCollection(xx, yy).ToString());
Console.ReadKey();
}
static bool ComparerCollection<T>(ICollection<T> x, ICollection<T> y)
{
return x.Equals(y);
}
}
}
Run Code Online (Sandbox Code Playgroud) 是否可以构建一个自定义模型字段/窗口小部件组合,它显示一个值但从不将任何内容写回数据库?我会在管理员表单中专门使用这个小部件.
我编写了自己的字段,它覆盖了formfield()声明自己的widget类的方法.它显示得很好,但只要在管理员中单击"保存"按钮,我就会收到验证错误:
This field is required.
Run Code Online (Sandbox Code Playgroud)
考虑到我的小部件没有渲染出表单字段,这是有道理的.但是,我想要做的基本上是从更新过程中删除此字段:无论何时在管理员中使用,都不应该在SQL UPDATE中提及它.
那可能吗?
这是我到目前为止的代码草图:
class MyWidget(Widget):
def render(self, name, value, attrs=None):
if value is None:
value = ""
else:
# pretty print the contents of value here
return '<table>' + ''.join(rows) + '</table>'
class MyField(JSONField):
def __init__(self, *args, **kwargs):
kwargs['null'] = False
kwargs['default'] = list
super(MyField, self).__init__(*args, **kwargs)
def formfield(self, **kwargs):
defaults = {
'form_class': JSONFormField,
'widget': MyWidget,
}
defaults.update(**kwargs)
return super(MyField, self).formfield(**defaults)
Run Code Online (Sandbox Code Playgroud)
更新1:用例是该字段表示审核日志.在内部,它将定期写入.然而,管理员永远不需要写它,它只需要以一种非常易读的格式呈现它.
我没有在应用程序中使用任何其他ModelForms,因此admin是唯一的表单用户.我不想在管理类本身上实现这种行为,因为这个字段将在各种模型中重用,并且总是应该以相同的方式运行.
编辑
我通过分叉进程而不是使用线程解决了这个问题.从评论中的评论和链接,我不认为线程是正确的举动.
谢谢大家的帮助.
完成编辑
我之前没有做太多线程.我已经创建了一些简单的示例"Hello World"脚本,但实际上没有任何工作.
为了帮助我掌握它,我使用Nagios中的二进制文件编写了一个简单的脚本来查询HTTP等服务.如果我有10个服务超时,则此脚本可以正常工作,但超时为1秒,脚本将花费超过10秒的时间.
我想要做的是彼此并行运行所有检查.这应该减少完成所需的时间.
我目前正在收到段错误,但不是所有时间.奇怪的是,我在processCheck函数中检查主机,我可以打印出所有主机.在检查主机之后,hosts变量仅打印集合中的一个或两个主机.我觉得这是命名空间问题,但我不确定如何解决.
我在这里发布了整个代码没有MySQL数据库,但是他的service_list视图的结果看起来像.
非常感谢任何帮助.
6543L, 'moretesting.com', 'smtp')
(6543L, 'moretesting.com', 'ping')
(6543L, 'moretesting.com', 'http')
from commands import getstatusoutput
import MySQLdb
import threading
import Queue
import time
def checkHost(x, service):
command = {}
command['http'] = './plugins/check_http -t 1 -H '
command['smtp'] = './plugins/check_smtp -t 1 -H '
cmd = command[service]
cmd += x
retval = getstatusoutput(cmd)
if retval[0] == 0:
return 0
else:
return retval[1]
def fetchHosts():
hostList = []
cur.execute('SELECT veid, hostname, service from …Run Code Online (Sandbox Code Playgroud) 我的脚本在Windows 8控制台中运行时会引发UnicodeDecodeError,但在Eclipse/PyDev中作为启动配置运行时则不会.PyDev环境和从unicode控制台运行python.exe的区别在哪里?
.net ×2
c# ×2
java ×2
python ×2
axis ×1
django ×1
django-admin ×1
maven-2 ×1
pydev ×1
python-2.7 ×1
spring ×1
spring-mvc ×1
unicode ×1
unit-testing ×1
wcf ×1
wsdl2java ×1