我对基于Java的技术知之甚少,出于业务实施的原因,我可能需要确定WebLogic Integration(WLI)或Oracle Service Bus(OSB)是否是将少量独立系统集成在一起的更好选择.这两种产品似乎都能够执行类似的任务,但在一种情况下(WLI),集成在技术上更受驱动,而另一种(OSB)则更多地由业务流程驱动.
假设成本是没有选择的,任何人都可以提供一个很好的描述,何时会选择使用一种产品而不是另一种?一种选择是否涉及更多自定义Java编码与配置?
我有一个EJB定义如下:
package com.foo;
@Stateless (mappedName="HelloWorld")
public class HelloWorldBean implements HelloWorld, HelloWorldLocal
....
Run Code Online (Sandbox Code Playgroud)
当它部署到Weblogic(WL)时,它获得名称myBean.我不确定这是否重要.
我尝试使用以下代码调用bean:
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
ic = new InitialContext(ht);
tp = (HelloWorld) ic.lookup("HelloWorld#com.foo.HelloWorldBean");
Run Code Online (Sandbox Code Playgroud)
任何人都知道我为什么会收到以下错误?
javax.naming.NameNotFoundException: While trying to lookup 'HelloWorld#com.foo.HelloWorldBean' didn't find subcontext 'HelloWorld#com'.
Resolved '' [Root exception is javax.naming.NameNotFoundException: While trying
to lookup 'HelloWorld#com.foo.HelloWorldBean' didn't find
subcontext 'HelloWorld#com'. Resolved '']; remaining name 'HelloWorld#com/foo/HelloWorldBean'
Run Code Online (Sandbox Code Playgroud) 必须为Web-INF中指定的类指定prefer-web-inf-classes,以优先于weblogic服务器的应用程序库中存在的类.我有一个特殊情况,我需要类加载器使用WEB-INF文件夹中的一个特定jar.有没有办法做到这一点?
我们在集群Weblogic环境中运行带有Hibernate的SpringMVC.我们的应用程序运行良好,直到我们遇到数据库空间问题.因此,我们的数据库提供程序扩展了数据库存储.
在更改之后,Weblogic系统状态正在抱怨线程池"线程池已经卡住线程".
日志文件中的堆栈跟踪如下所示:
<Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '12' for queue: 'weblogic.ke
rnel.Default (self-tuning)' has been busy for "641" seconds working on the request "weblogic.servlet.internal.ServletReq
uestImpl@17782ff3[
GET /default/default/applicationPreloader/load.do?_=1331887527968 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: */*
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
x-requested-with: XMLHttpRequest
Referer: http://novintegweb01.eu.acme.net:9136/default/default/applicationPreloader.do
Cookie: JSESSIONID1=NhBdPv9Hx8Wj5lnr5vnGhLSbR2GGM1DPhqT2YGzWCGFvhN3WJWVH!700169023!1391220923
Connection: Keep-Alive
Proxy-Client-IP: 192.168.1.1
X-Forwarded-For: 192.168.1.1
X-WebLogic-KeepAliveSecs: 30
X-WebLogic-Request-ClusterInfo: true
x-weblogic-cluster-hash: G4kGT1kfuDBbtj5w//SYNt6hlVo
]", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
oracle.net.ns.Packet.receive(Packet.java:293) …Run Code Online (Sandbox Code Playgroud) 我@Resource在使用Spring bean 注释的字段时遇到了问题.是)我有的:
带有setter方法的字段,带注释 @Resource
@Resource
private URL someUrl;
public void setSomeUrl(URL someUrl) {
this.someUrl = someUrl;
}
Run Code Online (Sandbox Code Playgroud)
<env-entry>我的部署描述符中的标记(web.xml)
<env-entry>
<env-entry-name>someUrl</env-entry-name>
<env-entry-type>java.net.URL</env-entry-type>
<env-entry-value>http://somedomain.net/some/path</env-entry-value>
</env-entry>
Run Code Online (Sandbox Code Playgroud)
应用程序无法以a开头BeanCreationException,我没想到,因为我不一定要Spring注入一个Spring管理的bean.我希望Spring处理@Resource和检索JNDI资源.
这是Spring 2.5.6SEC03,bean本身注释@Service为自动装配到其他@Component实例中.在这种情况下,Servlet容器是Tomcat 7,但最终将部署到Weblogic 10上,所以虽然我希望理想的解决方案同时适用于两者,但Weblogic是必备的.
我是否在Spring 2.5中滥用此功能?一般来说?我有点遗失吗?我误解了JNDI的一些事情?所有帮助表示赞赏.谢谢.
我正在使用Oracle的OEPE发行版开发一个Web应用程序,包括Weblogic服务器10.3.5.WLS包含自己的Spring版本,似乎是2.5.6.SEC01.但是,我们正在尝试使用特定于3.1版本的Spring和Spring Security功能.
Maven POM将Spring Version定义为3.1.1.RELEASE属性(将该属性插入到各个部分,即:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我在weblogic.xml中尝试了两种不同的方法来排除内置的Spring(一个在下面注释掉,但请放心,我已经尝试了两种方法):
<wls:container-descriptor>
<wls:prefer-application-packages>
<wls:package-name>com.oracle.ojdbc16.*</wls:package-name>
<wls:package-name>antlr.*</wls:package-name>
<wls:package-name>javax.persistence.*</wls:package-name>
<wls:package-name>org.apache.commons.*</wls:package-name>
<wls:package-name>org.springframework.*</wls:package-name>
<wls:package-name>org.hibernate.*</wls:package-name>
<wls:package-name>org.apache.xerces.*</wls:package-name>
</wls:prefer-application-packages>
<!-- <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes> -->
</wls:container-descriptor>
Run Code Online (Sandbox Code Playgroud)
使用我自己的Spring版本,我需要做什么?
我有一个使用Maven部署的应用程序Weblogic 10.3.6.我已在weblogic.xml中指定了上下文根
<context-root>/myapps</context-root>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是它将war文件名作为上下文根而不是我指定的名称 weblogic.xml
如何更改上下文根而不是将war文件名作为上下文根?
weblogic.xml中
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
http://xmlns.oracle.com/weblogic/weblogic-web-app
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<context-root>/myapps</context-root>
<container-descriptor>
<prefer-application-packages>
<package-name>antlr.*</package-name>
<package-name>org.hibernate.*</package-name>
<package-name>javax.persistence.*</package-name>
</prefer-application-packages>
</container-descriptor>
</weblogic-web-app>
Run Code Online (Sandbox Code Playgroud) 我们正在将应用程序升级Weblogic 10.3.0到10.3.6.当我们尝试部署它时,我们得到错误:
java.lang.ClassFormatError: Duplicate method name&signature in class file...
Run Code Online (Sandbox Code Playgroud)
经过进一步调查,我们发现问题是由如下代码引起的:
interface Foo{
void foo();
}
interface Bar{
void foo();
}
interface Baz extends Foo, Bar{}
BazEJB implements Baz....
Run Code Online (Sandbox Code Playgroud)
这导致在Baz中生成2个foo方法.... ELOImpl.class当我们尝试部署ear文件时会导致此错误.
明显的解决方法是删除此模式,但还有其他建议吗?我们这里是错误的还是应该被视为weblogic中的错误?
我们仍然在使用EJB 2这种模式Weblogic 8.1 and 10.3.0
我用Google搜索,试图理解为什么Weblogic 10.3.4没有将EJB注入到servlet的带注释字段中.
Ear包含定义DAO EJB的ejb.jar和带有TestServlet的web.war.
PluginDataDAO.java
@Stateless
public class PluginDataDAO implements IPluginDataDAO {
}
Run Code Online (Sandbox Code Playgroud)
IPluginDataDAO.java
@Local
public interface IPluginDataDAO {
}
Run Code Online (Sandbox Code Playgroud)
TestServlet.java
public class TestServlet extends HttpServlet {
@EJB(mappedName = "PluginDataDAO")
private IPluginDataDAO pluginDataDAO;
}
Run Code Online (Sandbox Code Playgroud)
web.xml中
<web-app version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID">
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>cz.literak.blog.j2ee.TestServlet</servlet-class>
</servlet>
Run Code Online (Sandbox Code Playgroud)
Servlet位于ejb.jar中的web.war,EJB内部.没有运气,我尝试使用/不使用映射名称属性的注释.当我尝试将web.xml升级到3.0时,部署失败,未枚举3.0.怎么了?为什么pluginDataDAO仍然为空?谢谢.
我正在尝试使用由Visual Studio 2013中的Oracle Web Logic创建的Web服务.我添加了服务引用,但是当我调用服务构造函数时,我收到错误:
在操作(operationName)中,在名称空间(名称空间URL)中使用元素名称(elementName)声明了多个错误
WSDL中此操作的片段如下图所示:
每次我尝试使用该服务时都会抛出此异常,我无法继续进行此操作.
这是WSDL的问题还是我可以作为消费者做些什么?