使用轴api的Lotus Notes 6.5中的JavaAgent给出了exception“没有为org.apache.commons.logging.LogFactory定义实现”

我需要在Lotus Notes 6.5 DB中编写JavaAgent来访问Web服务。 我为此目的使用了Axis Apache API。 我创建了一个Java代理,并使用“编辑项目”按钮在代理中添加了轴的jar文件。

以下是代理商代码:

import lotus.domino.*; import javax.xml.*; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import javax.xml.namespace.QName; import java.net.URL; public class JavaAgent extends AgentBase { public void NotesMain() { try { Session session = getSession(); AgentContext agentContext = session.getAgentContext(); String endpoint = "http://ws.apache.org:5049/axis/services/echo"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint) ); call.setOperationName(new QName("http://soapinterop.org/", "echoString")); String ret = (String) call.invoke( new Object[] { "Hello!" } ); System.out.println("Sent 'Hello!', got '" + ret + "'"); } catch(Exception e) { e.printStackTrace(); } } } 

以下是抛出的exception:

 java.lang.ExceptionInInitializerError: org.apache.commons.discovery.DiscoveryException: No implementation defined for org.apache.commons.logging.LogFactory at org.apache.commons.discovery.tools.SPInterface.newInstance(SPInterface.java:197) at org.apache.commons.discovery.tools.DiscoverClass.newInstance(DiscoverClass.java:579) at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:418) at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:378) at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:84) at java.security.AccessController.doPrivileged(Native Method) at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:80) at org.apache.axis.components.logger.LogFactory.(LogFactory.java:72) at org.apache.axis.configuration.EngineConfigurationFactoryFinder.(EngineConfigurationFactoryFinder.java:94) at org.apache.axis.client.Service.(Service.java:111) at JavaAgent.NotesMain(JavaAgent.java:17) at lotus.domino.AgentBase.runNotes(Unknown Source) at lotus.domino.NotesThread.run(NotesThread.java:218) 

我很想跟上互联网上的一些链接,但是我无法得到它要求的确切内容。 例如: http : //www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/40d033fba3897f4d85256cd30034026a?OpenDocument

任何帮助都会很棒。 我想做的就是写一个代理,以便我可以访问一个网络服务,比如w3schools上的温度转换网络服务。 http://www.w3schools.com/webservices/tempconvert.asmx?op=FahrenheitToCelsius

我用Google搜索了你的错误消息,这是第一次点击:

http://croarkin.blogspot.fi/2010/08/commons-logging-headaches-with-axis.html

它建议使用commons-logging.properties文件:

 org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger org.apache.commons.logging.LogFactory = org.apache.commons.logging.impl.LogFactoryImpl 

或者把它放到你的代码中:

 @BeforeClass public static void beforeClass() { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.Log4JLogger"); System.setProperty("org.apache.commons.logging.LogFactory", "org.apache.commons.logging.impl.LogFactoryImpl"); } 

可能你已经尝试过这个,因为这是谷歌的第一次打击,但以防万一……